什么时候在window.onError函数上提供正确的堆栈跟踪?

时间:2013-07-16 21:34:39

标签: javascript error-handling stack-trace

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

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

虽然该函数没有获取Error对象,但我们无权访问该对象的堆栈属性。

是否有任何关于的可靠信息来源会有什么变化?

2 个答案:

答案 0 :(得分:35)

错误对象(包含“已清理的”堆栈跟踪)现在作为第五个参数传递到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也实现的列号。

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

答案 1 :(得分:10)

似乎错误对象本身将是提供给onerror的第五个参数。 http://html5.org/tools/web-apps-tracker?from=8085&to=8086
http://www.whatwg.org/specs/web-apps/current-work/ - 第7.1.6.1节