我正在从控制台调用一个函数,但是当它抛出一个异常时,我没有像代码执行正常那样收到堆栈跟踪。
有没有办法可以修改我的命令(也许是使用try / catch)让它为我提供这些信息?
澄清:
page.js:
function otherStuff() { return ['a','b',undefined,'c'];
function doStuff() {
var x = otherStuff();
var z = parseInt(x[2]); // this will throw an error
}
控制台,在加载链接page.js的html页面
之后> otherStuff();
我没有从返回给我的错误中获得行号。当从页面(而不是控制台)运行它时,我会收到一个行号和一个堆栈跟踪。
答案 0 :(得分:11)
虽然详细,但这将在Chrome JS控制台中打印交互式错误的堆栈跟踪:
try {
throw new Error();
} catch (e) {
console.error(e.stack);
}
不幸的是,如果抛出非Error
对象,这将不起作用。
答案 1 :(得分:2)
您的代码中有错误。
你缺少一个结束括号:
function otherStuff() { return ['a','b',undefined,'c']; //} where am i?
function doStuff() {
var x = otherStuff();
var z = parseInt(x[2]); // this will throw an error
}
侧点:
parseInt(undefined)
不会抛出错误。例子:http://jsfiddle.net/maniator/Zequj/2/