许多其他编程语言(例如java,ruby)中的异常/错误总是提供stacktrace/backtrace信息。

在JavaScript中,未处理的错误被window.onError捕获。

尽管该函数没有获取Error对象,所以我们无法访问该对象的stack属性。

当发生变化时,是否有任何可靠的信息来源?

最佳答案

现在,该错误对象将包含“已清理”的堆栈跟踪,现在作为第五个参数传递给Chrome中的onerror。您可以在这里阅读有关信息:https://code.google.com/p/chromium/issues/detail?id=147127

在撰写本文时,它在Canary中,应该在本月晚些时候推出稳定的Chrome版本。
如果您运行的是Canary,则可以这样进行测试:

window.onerror = function (message, file, line, column, errorObj) {
    if(errorObj !== undefined) //so it won't blow up in the rest of the browsers
        console.log('Error: ' + errorObj.stack);
}

您可以看到,根据规范,他们还添加了IE 10也已实现的列号。

您还可以 checkout Mozilla讨论:https://bugzilla.mozilla.org/show_bug.cgi?id=355430

关于javascript - 何时在window.onError函数上提供正确的堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17687410/

10-12 01:08