让我们假设我有一个名为myfile.js的文件。在myfile.js里面我有以下代码:
$(document).on("my_custom_event", function(e)
{
my_custom_function(e);
alert(undefined[1]); // This is only to trigger an exception, it's not normally used
});
现在,我的index.html文件将包含该JS文件,并且在触发my_custom_event时触发该异常。
我正在尝试为错误处理设置一个全能,因此我可以向用户显示相应的错误消息和堆栈跟踪,以便他们可以报告问题,所以我尝试使用window.onerror,如下所示:
window.onerror = function(msg, url, line, column, error) {
var error = {
"_type": "EXCEPT",
"_msg": "A critical error has occurred.<br/>" + msg + ((error !== undefined) ? "<br/>" + error.stack : "<br/>URL: " + url + ", line " + line)
};
$.event.trigger({type:"message_event", object:error});
};
假设message_event在另一个函数的其他位置处理,并将消息显示给用户。 jQuery也包含在index.html文件中,所以一切都在为此工作。上面的window.onerror函数的潜在输出都没有给出任何有用的信息,因为它们只是通过jQuery堆栈跟踪并且没有提到myfile.js。
有什么方法可以实际报告问题出在myfile.js中吗?它不一定要通过window.onerror,但是myfile.js中的try / catch实际上并不是一个选项,因为我有数百种这样的函数(尽管有正确的代码只会在出现真正的错误时抛出异常)发生)并向他们添加一个try / catch都需要数周时间。
我应该提一下,我也尝试过使用stacktrace.js(http://stacktracejs.com/),但它也没有提供任何有用的东西。