`

window.onerror 应用实例

阅读更多

详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp75

 

window.onerror = function(sMessage,sUrl,sLine){};

onerror函数的三个参数用于确定错误确切的信息,代表的意思依次为:错误信息;发生错误的文件;发生错误的行号。

示例:

<SCRIPT>
window.onerror=fnErrorTrap;
function fnErrorTrap(sMsg,sUrl,sLine){
oErrorLog.innerHTML="<b>An error was thrown and caught.</b><p>";
oErrorLog.innerHTML+="Error: " + sMsg + "<br>";
oErrorLog.innerHTML+="Line: " + sLine + "<br>";
oErrorLog.innerHTML+="URL: " + sUrl + "<br>";
return false;
}
function fnThrow(){
eval(oErrorCode.value);
}
</SCRIPT>
<INPUT TYPE="text" ID=oErrorCode VALUE="someObject.someProperty=true;">
<INPUT TYPE="button" VALUE="Throw Error" onclick="fnThrow()">
<P>
<DIV ID="oErrorLog">
</DIV>
上面示例的方法很值得借鉴。
 
 

在捕获js错误时,我们通常使用try{}catch(e){}的方式,然后通过e.errorMessage等方式获取错误信息然后报告错误。但对于onerror事件可能很少问津,我们是否思考过如何报告错误所在的行号?如果想过这个是否也被这个问题所困扰过,是否认为在js里不可能捕获错误的行号呢?其实本人就遇到上述的几个问题,今日读某人写的一段js代码顿然发现了onerror事件,要说onerror这个时间也是n久以前就知道了,但对于其所带有的三个参数和其特殊性质却一直没有去了解过。经过自己的研究测试,对onerror事件有了一些新的认识和了解。在页面没有错误时,window.onerror事件是不存在的,也就是null(废话!没出错如果onerror出现还正常吗?)我们一般通过函数名传递的方式(引用的方式)将要执行的操作函数传递给onerror事件,如window.onerror=reportError;window.onerror=function(){alert('error')},但我们可能不知道该事件触发时还带有三个默认的参数,他们分别是错误信息,错误页面的url和错误行号。要知道这个可是事件,就如onclick和onmouseover等事件一样,但它是有参数。我们可以这样测试。

<script type="text/javascript"> window.onerror=testError; function testError(){ arglen=arguments.length; var errorMsg="参数个数:"+arglen+"个"; for(var i=0;i<arglen;i++){ errorMsg+="/n参数"+(i+1)+":"+arguments[i]; } alert(errorMsg); window.onerror=null; return true; } function test(){ error } test() </script>
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]
首先将testError方法绑定给onerror事件,然后在test方法里触发一个错误,在IE中执行时我们发现如下提示: 
--------------------------- 
Microsoft Internet Explorer 
--------------------------- 
参数个数:3个 
参数1:'error' 未定义 
参数2:file://E:/yanwei/test/testError.html 
参数3:14 
--------------------------- 
确定 
--------------------------- 
可以发现,当出错时函数testError捕获到了三个参数。通过将函数绑定到onerror事件就可以在页面出错时捕获以上三个参数。 
在测试中还发现以下一些问题: 
1、通过在函数末尾加上return true,可以在函数出错时不会弹出系统的错误信息(IE)。 
2、如果页面出现多次错误,只捕获第一次错误并进行处理然后终止后面程序的执行。 
3、onerror事件并不能捕获所有的错误,只能捕获函数外或函数内错误(??这个是什么意思,可不是开玩笑呢),如 adasdf; 
function test(){ 
aaaa; 
} 
可以捕获到adasdf未定义的错误 
function test(){ 
aaaa; 
} 
可以捕获到aaaa未定义的错误,而对于functiona test(){}或function test()dd{} 的错误却不能捕获而会直接弹出系统错误信息。 
4、onerror在IE和FF等浏览器执行方式是一样的,而且都包含这三个参数。
分享到:
评论

相关推荐

    window.XMLHttpRequest详解

    可以监听`onerror`和`ontimeout`事件来处理请求失败或超时的情况。同时,`timeout`属性可以设置请求的超时时间: ```javascript xhr.timeout = 5000; // 设置超时时间为5秒 xhr.ontimeout = function() { console....

    [removed]()的用法与实例分析

    总的来说,`window.onerror` 是JavaScript中处理运行时错误的关键工具,理解其工作原理和限制,可以帮助开发者构建更健壮和安全的Web应用。通过适当的错误处理策略,可以提升用户体验,同时避免因错误导致的应用程序...

    JS异常处理try..catch语句的作用和实例

    而且,出于安全和隐私的考虑,现代浏览器对window.onerror的跨域访问做了限制,因此需要在同源环境下才能正确使用。 再来看一个具体的异常处理示例。在上面的代码中,变量a被赋予了字符串"helloworld",然后通过...

    Websocket简单实例

    在Java中,这通常通过实现`javax.websocket.OnMessage`, `OnOpen`, `OnClose`和`OnError`方法的`@ServerEndpoint`注解的类来完成。例如: ```java import javax.websocket.OnClose; import javax.websocket....

    JAVASCRIPT 数据库 静态连接

    1. 数据库创建:使用`window.indexedDB.open()`方法创建或打开数据库,指定数据库名称、版本和初始大小。 2. 对象存储:数据库中存储数据的基本单位是对象存储(Object Store),类似于表。通过`createObjectStore()...

    errorpage.zip

    1. 错误捕获:通过try-catch语句或者window.onerror事件监听器,可以捕获并处理运行时的JavaScript错误。 2. 错误反馈:当错误发生时,JavaScript可以用来发送错误报告到服务器,这对于追踪和分析用户端的错误非常...

    react-使用WebSpeechAPI为React应用加入语音功能

    recognition.onerror = (event) =&gt; { console.error('语音识别出错:', event.error); }; ``` 二、`SpeechSynthesis`:语音合成 1. **创建语音合成对象**:创建`SpeechSynthesisUtterance`实例,用于存储合成的...

    前端开源库-errors.zip

    2. window.onerror事件:全局错误监听,可以捕获未被捕获的错误,包括语法错误。 3. Promise的catch方法:处理Promise链中的错误,避免未捕获的异常导致应用崩溃。 4. Error事件监听器:如EventTarget....

    clipboard复制文本或者隐藏域到剪切板,兼容ie.chrome.firefox

    - `clipboard.on(event, callback)`: 添加事件监听器,如`'success'`或`'error'`,回调函数中可以处理复制成功或失败的逻辑。 - `clipboard.destroy()`: 销毁实例,清理监听事件。 3. **浏览器兼容性**: `...

    javascript经典特效---JavaScript容错脚本.rar

    除了try...catch,还有其他一些错误处理方法,比如使用window.onerror全局事件处理器,它可以监听整个页面的所有未捕获错误。当发生错误时,onerror事件会被触发,提供错误信息,开发者可以通过这个事件来记录错误...

    Javascript在IE和FireFox中的不同表现

    - IE使用`try...catch...finally`语句捕获错误,而Firefox支持`window.onerror`全局错误处理。 为了解决这些问题,开发者通常需要使用条件注释、库如jQuery或polyfills来确保代码在各个浏览器中的兼容性。同时,...

    javascript编程异常处理实例小结

    - 使用window.onerror事件处理器来捕获那些未被try...catch捕获的异常。 - 在catch块中不要简单地忽略错误,而应该记录错误信息,并且根据错误类型决定处理策略。 - 使用异步编程模式时(如使用Promise),合理使用...

    javascript 异常处理使用总结

    在JavaScript中,异常处理主要通过try...catch...finally语句实现,此外,JavaScript也提供了window.onerror事件和throw语句来处理异常。 首先,我们来看一下try...catch...finally语句的用法。try语句中包含可能抛...

    Ajax完全自学手册(PPT)

    Test4Onerror1.htm onerror错误处理 Test4TryCatch1.htm try catch 语法结构 Test4Throw.htm throw关键字显式抛出异常 throwException.htm 抛出自定义错误 第7章 JavaScript中的XML Test4IE XMLDOM....

    【ASP.NET编程知识】Asp.net MVC使用swupload实现多图片上传功能.docx

    6. 实现图片上传:使用uploader 实例的makeThumb 方法生成缩略图,并将其添加到图片容器中。 7. 上传图片处理:在服务器端处理上传的图片,并返回处理结果。 通过这些步骤,开发者可以使用 SwUpload 在 ASP.NET ...

    Ajax完全自学手册(源代码).rar

    Test4Onerror1.htm onerror错误处理 Test4TryCatch1.htm try catch 语法结构 Test4Throw.htm throw关键字显式抛出异常 throwException.htm 抛出自定义错误 第7章 JavaScript中的XML Test4IE XMLDOM....

    javascript Error 对象 错误处理

    #### 使用 `window.onerror` 捕获错误 除了传统的`try...catch`机制外,`window.onerror`也可以用来捕获全局范围内未被捕获的错误。此事件处理器接受三个参数:错误消息、出错脚本的URL以及出错行号。 ```...

    jquery动态添加多附件上传实例,开发实例

    本实例聚焦于使用jQuery动态添加多附件上传功能,这是一个常见的需求,特别是在内容管理系统、论坛或者在线表单中。在实际开发中,实现这样一个功能可能会遇到各种挑战,如文件类型检查、文件大小限制、进度显示以及...

    three.js加载、集成

    在上面的代码中,`loader.load()`方法接收四个参数:`url`是模型文件的路径,`onLoad`是加载成功时的回调,`onProgress`可选,用于跟踪加载进度,`onError`则是加载失败时的回调。 一旦模型加载成功,它会被添加到`...

Global site tag (gtag.js) - Google Analytics