fly*_*ire 11 javascript error-handling jquery web-applications web
可能重复:
JavaScript异常处理
我有一个Web应用程序,其中100%的javascript代码作为jQuery事件处理程序执行(我猜大多数jQuery应用程序都是这样的).
问题是如何定义全局异常处理程序.也就是说,如果在任何jQuery事件处理程序中发生的任何异常被调用时调用的函数未被捕获(无论是onload,单击,成功的ajax调用,ajax错误,等等).我的函数会收到错误信息(异常,堆栈跟踪,等等).
澄清:我并不是说全局捕获服务器或网络产生的ajax问题,而是全球性地捕获由于(可能是)代码中的错误引起的问题.
Rom*_*sse 12
您可以使用window.onerror:https://developer.mozilla.org/en-US/docs/DOM/window.onerror
window.onerror = function errorHandler(msg, url, line) {
console.log(arguments);
// Just let default handler run.
return false;
}
Run Code Online (Sandbox Code Playgroud)
我想这可以使用面向方面编程的概念来实现。
我们可以简单地创建一个包装器jQuery.event.dispatch来处理错误:
(function () {
var temp = jQuery.event.handle;
jQuery.event.handle = function () {
try {
temp.apply(this, arguments);
} catch (e) {
console.log('Error while dispatching the event.');
}
}
}());
$(document).click(function () {
throw 'Some error...';
});
Run Code Online (Sandbox Code Playgroud)
使用这种方法必须非常小心,因为内部接口会发生变化
jQuery.event.dispatch而不是jQuery.event.handle.