从Chrome中的控制台运行代码时获取错误的堆栈跟踪

时间:2011-10-18 19:38:34

标签: javascript google-chrome stack-trace

我正在从控制台调用一个函数,但是当它抛出一个异常时,我没有像代码执行正常那样收到堆栈跟踪。

有没有办法可以修改我的命令(也许是使用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();

我没有从返回给我的错误中获得行号。当从页面(而不是控制台)运行它时,我会收到一个行号和一个堆栈跟踪。

2 个答案:

答案 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/