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

Javascript 在Chrome中从控制台运行代码时获取错误的堆栈跟踪,javascript,google-chrome,stack-trace,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 er

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

有没有一种方法可以修改我的命令(可能是使用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();

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

虽然冗长,但这将在Chrome JS控制台中打印交互错误的堆栈跟踪:

try { 
    throw new Error(); 
} catch (e) { 
    console.error(e.stack); 
}

不幸的是,如果抛出一个非
错误
对象,这将不起作用。

您的代码中有一个错误

缺少右大括号:

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(未定义)
不会引发错误。例如:

命令是什么?什么版本的chrome?(你母亲的娘家姓是什么?)这很管用。数据的格式不同,但都有(对我来说最重要的是行号)。如果抛出非
错误
对象,我的堆栈跟踪信息将丢失,对吗?因为在这种情况下,我们是从
Error
对象中检索它的。是的,对于任何不基于JS标准Error对象的自定义Error对象也是如此。当
抛出一个字符串时,我尝试在
catch
子句中设置一个断点,试图看看Chrome是否在内部创建了某种可以使用的适当的异常对象——恐怕没有这样的运气。只需注意:MobileSafari似乎没有为其错误提供“堆栈”属性。