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,我无意中找到了同样的东西。。所以我想我还是补充一个答案吧。

我意识到我根本帮不了什么忙。。。但“未捕获的魔法”也许是我见过的最有趣的例外。:-)