gpt4 book ai didi

javascript - 抛出异常时如何获取 JavaScript 堆栈跟踪?

转载 作者:IT老高 更新时间:2023-10-28 11:15:35 24 4
gpt4 key购买 nike

如果我自己抛出一个 JavaScript 异常(例如,throw "AArrggg"),我如何获得堆栈跟踪(在 Firebug 中或其他中)?现在我刚刚收到消息。

编辑:正如下面许多人发布的那样,可以获取 JavaScript 异常 的堆栈跟踪,但我想获取 的堆栈跟踪我的 异常(exception)。例如:

function foo() {
bar(2);
}
function bar(n) {
if (n < 2)
throw "Oh no! 'n' is too small!"
bar(n-1);
}

当调用 foo 时,我想获得一个堆栈跟踪,其中包括对 foobarbar< 的调用

最佳答案

编辑 2(2017 年):

在所有现代浏览器中,您只需调用:console.trace(); (MDN Reference)

编辑 1 (2013):

在原始问题的评论中指出的更好(和更简单)的解决方案是使用 Error 对象的 stack 属性,如下所示:

function stackTrace() {
var err = new Error();
return err.stack;
}

这将生成如下输出:

DBX.Utils.stackTrace@http://localhost:49573/assets/js/scripts.js:44
DBX.Console.Debug@http://localhost:49573/assets/js/scripts.js:9
.success@http://localhost:49573/:462
x.Callbacks/c@http://localhost:49573/assets/js/jquery-1.10.2.min.js:4
x.Callbacks/p.fireWith@http://localhost:49573/assets/js/jquery-1.10.2.min.js:4
k@http://localhost:49573/assets/js/jquery-1.10.2.min.js:6
.send/r@http://localhost:49573/assets/js/jquery-1.10.2.min.js:6

提供调用函数的名称以及 URL、调用函数等。

原件(2009 年):

this snippet 的修改版本可能会有所帮助:

function stacktrace() { 
function st2(f) {
return !f ? [] :
st2(f.caller).concat([f.toString().split('(')[0].substring(9) + '(' + f.arguments.join(',') + ')']);
}
return st2(arguments.callee.caller);
}

关于javascript - 抛出异常时如何获取 JavaScript 堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/591857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com