如何在不停止脚本的情况下获取JS堆栈跟踪?

时间:2017-01-11 08:47:43

标签: javascript stack-trace

如果你在JavaScript中throw,抛出的错误通常会传播到window.onerror处理程序,这会阻止脚本的进一步执行。

有没有办法从函数中获取堆栈跟踪而不会导致暂停执行?

2 个答案:

答案 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将从那里打印出堆栈。

请注意,堆栈中的方法名称不受源映射的影响,因此如果您正在处理缩小的代码,您可能仍会获得混淆的名称。

相关问题