Safari中的window.onerror(Javascript)

Kar*_*ngh 6 javascript error-handling

我创建了一个与IE和Mozila一起使用的错误消息.没有使用Safari,Chrome和Opera.

但我需要使用它.请给我正确的方法.

<script language="javascript" type="text/javascript">
window.onerror = function(msg, url, line)
{
    document.write("Message\t = "+msg + "<br/>Location\t = " + url + "<br/>Line No.\t = " + line + "<br/>Error No.\t = " + this.err.number);
}
this.err = Error(12,"My Own Error");
throw this.err;
</script>

==========================================
Internet Explorer:

My Error
Message = My Own Error
Location = http://localhost/practice/JavaScript/window.errors.php
Line No. = 8
Error No. = 12 
================================================
Mozilla FireFox:

My Error
Message = Script error.
Location = My Own Error
Line No. = 0
Error No. = undefined 
=====================================================
Safari, Chrome, Opera:

My Error
Run Code Online (Sandbox Code Playgroud)

看看代码Mozilla提供的错误信息.我所做的?

And*_*y E 5

Opera根本不支持window.onerror.Chrome支持它,但不支持你自己犯的错误.使用除Error()例如以外的错误对象时,Internet Explorer也是如此TypeError().Chrome也不提供文件参数.

您应该使用try...catch语句正确捕获您将要抛出的任何异常,而不是依赖于window.onerror.

  • 重点是捕获您不会抛出的异常/错误,但这些异常/错误很可能发生在足够复杂的JS中(例如,向用户显示一个很好的道歉消息).我自己也在看同样的问题,Chrome/Safari没有捕获无效的参考错误 - 这可能是最常见的错误. (7认同)
  • @AndyE您只能编写无第三方图书馆允许的无错代码.例如,我最终在这里,因为我必须使用有缺陷的Facebook Javascript库,他们抛出的异常甚至不能通过try/catch捕获,因为它是从他们控制的对话框触发的. (4认同)
  • "当然,解决方案是编写无错误的代码并尽可能地进行测试." - 解决方案并非基于现实. (3认同)