如果你在JavaScript中throw
,抛出的错误通常会传播到window.onerror
处理程序,这会阻止脚本的进一步执行。
有没有办法从函数中获取堆栈跟踪而不会导致暂停执行?
答案 0 :(得分:19)
您也可以在不抛出错误的情况下创建新错误并使用堆栈跟踪
function doSomething() {
...
const stackTrace = new Error().stack
...
}
答案 1 :(得分:5)
抛出错误将暂停堆栈,除非被try / catch捕获。
function getStack() {
try {
throw new Error();
} catch(e) {
return e.stack;
}
}
从任何函数中调用getStack将从那里打印出堆栈。
请注意,堆栈中的方法名称不受源映射的影响,因此如果您正在处理缩小的代码,您可能仍会获得混淆的名称。