如果我自己抛出一个JavaScript异常(例如,抛出“AArrggg”),我如何获得堆栈跟踪(在Firebug或其他)?现在我刚收到消息。
编辑:正如下面许多人发布的那样,可以为JavaScript异常获得堆栈跟踪,但我想为我的异常获得堆栈跟踪。例如:
function foo() {
bar(2);
}
function bar(n) {
if (n < 2)
throw "Oh no! 'n' is too small!"
bar(n-1);
}
当调用foo时,我想获得一个堆栈跟踪,其中包括对foo, bar, bar的调用。
此填充代码在现代(2017)浏览器(IE11, Opera, Chrome, FireFox, Yandex)中工作:
printStackTrace: function () {
var err = new Error();
var stack = err.stack || /*old opera*/ err.stacktrace || ( /*IE11*/ console.trace ? console.trace() : "no stack info");
return stack;
}
其他答案:
function stackTrace() {
var err = new Error();
return err.stack;
}
不能在IE 11中工作!
使用arguments. called .caller -在任何浏览器中都不能在严格模式下工作!