Javascript未捕获异常处理/window.onerror msg参数格式
我需要能够捕捉一种可能发生在许多不同页面/脚本中的错误类型,并在发生此错误时执行自定义逻辑。我计划使用Javascript未捕获异常处理/window.onerror msg参数格式,javascript,error-handling,chromium,Javascript,Error Handling,Chromium,我需要能够捕捉一种可能发生在许多不同页面/脚本中的错误类型,并在发生此错误时执行自定义逻辑。我计划使用 window.onerror = function (msg, url, line) { if ({{my specific error happened}}){ {{do some custom work}}; return true; } //do nothing and let the browser notify the user
window.onerror = function (msg, url, line) {
if ({{my specific error happened}}){
{{do some custom work}};
return true;
}
//do nothing and let the browser notify the user of all the other errors
}
因此,我可以在某个地方执行抛出{{my specific error}}
并在窗口中捕获它。我试着抛出“魔法”
但是在窗口中。onerror
我得到msg==“uncaughtmagic”
。msg
的这部分“未捕获”是否总是在我抛出的字符串之前?我可以依靠它来检测我的特定错误吗?
或者是否有其他机制来检测窗口中的错误类型。onerror
?我只需要它在Chromium中工作。一些浏览器现在传递实际的错误对象。不确定哪些浏览器支持此功能。据说壁虎31是必需的。对chrome和其他产品一无所知 您可以创建自定义错误,如:
Magic = function( message ) {
this.name = 'Magic';
this.message = message;
}
Magic.prototype = new Error();
Magic.prototype.constructor = Magic;
把它扔到某个地方:
throw new Magic('Kaboom');
然后在窗口中捕捉它。onerror
如下所示:
window.onerror = function ( message, filename, lineno, colno, error ){
if ( error !== undefined && error.hasOwnProperty( "name" ) && error.name == "Magic"){
alert("some uncaught magic caused: " + message +" - in "+filename +"("+lineno+")" );
return true;
}
}
检查**
您还可以检查消息是否包含“Magic”,但您可能会意外发现包含“Magic”的其他错误
ps:对不起necro,我无意中找到了同样的东西。。所以我想我还是补充一个答案吧。我意识到我根本帮不了什么忙。。。但“未捕获的魔法”也许是我见过的最有趣的例外。:-)