JavaScript的错误处理之onerror事件的使用方法

摘要:
JavaScript对我来说一直是一件深刻的事情,尤其是在错误处理方面。这几天我无意中在JavaScript中发现了一个错误处理事件。我顺便研究了一下它的用法,突然发现它比警报更有效。Oneerror事件:当程序中发生错误时,将在窗口对象上触发错误事件。通过将函数绑定到oneerror事件,可以在发生页面错误时捕获上述三个参数。

JavaScript对于我来说一直是个很高深莫测的东西,尤其是在错误处理这方面。Firefox出来之前编写JavaScript真的很头痛,程序运行不了害我不得不认真检查程序,反复的使用Alert验证每一段代码是否运行正常,费时也费力。也许很多人笑我为什么不用一些调试软件或是插件呢?原因很简单:因为我当时不知道。现在知道了也很少用了,因为有了Firefox!

这几天无意之中发现了JavaScript一个错误处理的事件,顺便研究了一下它的使用方法,猛然发现真的比alert要效率的多呀。

onerror事件:当程序出现错误时,error事件会在window对象上触发。实例一:onerror的简单应用

onerror事件实例一
Code

onerror事件实例一
<scripttype="text/javascript">
window.onerror
=function(){
alert(
"真不幸,又出错了");
}
phplamp();
</script>

运行实例一:会弹出“真不幸,又出错了”。因为:phplamp()函数并未在程序中并不存在。

注意:onerror事件必需在此文档其它Javascript程序前!

实例二:使用onerror事件的参数确定错误的详细信息。onerror事件有三个参数,第一个:错误的描述信息;第二个:错误出现的文件URL地址;第三个:错误所在的行号。

Code
onerror事件实例二
<scripttype="text/javascript">
window.onerror
=function(msg,url,line){
alert(
"真不幸,又出错了\n"+"\n错误信息:"+msg
+"\n所在文件:"+url
+"\n错误行号:"+line
);
}
phplamp();
</script>
运行实例二即弹出了错误的详细信息。

注:此调试方法试用于IE,Firefox。Opera,chrome测试未通过。Safari未测试。

我们一般通过函数名传递的方式(引用的方式)将要执行的操作函数传递给onerror事件,如window.onerror=reportError;window.onerror=function(){alert('error')},但我们可能不知道该事件触发时还带有三个默认的参数,他们分别是错误信息,错误页面的url和错误行号。

Code
<scripttype="text/javascript">
window.onerror
=testError;
functiontestError(){
arglen
=arguments.length;
varerrorMsg
="参数个数:"+arglen+"";
for(vari=0;i<arglen;i++){
errorMsg
+="\n参数"+(i+1)+""+arguments[i];
}
alert(errorMsg);
window.onerror
=null;
returntrue;
}
functiontest(){
error
}
test()
</script>

首先将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在IE和FF等浏览器执行方式是一样的,而且都包含这三个参数。

免责声明:文章转载自《JavaScript的错误处理之onerror事件的使用方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇人生路上对我影响最大的三个老师前端入门flutter-06 ListView基础列表组件、水平列表组件、图标组件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Alert弹出框处理

selenium的API提供了Alert类对alert弹出框的处理的方法,涉及到的方法有text,dismiss(),accept()和send_keys(),在javascript中主要有alert弹出警告框,confirm弹出确认框,prompt弹出输入框。selenium操作alert需要导入Alert的发类,具体为:from selenium.we...

【转】Javascript异步编程之setTimeout与setInterval

Javascript异步编程之setTimeout与setInterval 转自:http://www.tuicool.com/articles/Ebueua 在谈到异步编程时,本人最主要会从以下三个方面来总结异步编程(注意:特别解释:是总结,本人也是菜鸟,所以总结不好的,请各位大牛多多原谅!) 1. setTimeout与setInterval详细分析基...

百度地图JavaScript开发入门先知

最近项目紧急开发了一些百度地图的功能,觉得百度地图实数强大!于是今天不忙总结一下,看到不错的文章先转载。 文章出处:https://www.opengps.cn/Blog/View.aspx?id=14 百度地图JavaScript开发第一步,得会看资料。很多新手,是因为连基本的页面怎么打开都不知道,重度依赖搜索引擎去搜出来百度地图开发官方站点,从而记不住...

Javascript:再论Javascript的单线程机制 之 DOM渲染时机

Javascript:再论Javascript的单线程机制 之 DOM渲染时机 背景 Javascript是单线程事件驱动的,所有能看到的Javascript代码都是在一个线程执行,定时器回调和AJAX回调会在适当的时刻插入队列等待Javascript线程调度执行,今天想测试一下DOM渲染的线程与时机,具体的问题是: 修改DOM会立即显示在UI中吗? 一个...

JavaScript数据类型之数字类型

引言 JavaScript不区分整数值和浮点数值,全部使用浮点数值表示。当一个数字直接出现在JavaScript程序中,我们称之为数字直接量(numeric litertal)。JavaScript支持多种格式的数字直接量。 整型直接量 在JavaScript程序中,用一个程序序列表示一个十进制整数。除了十进制的整型直接量,JavaScript同样能识别十...

[转]Windows 注册自定义的协议

[转自] http://blog.sina.com.cn/s/blog_86e4a51c01010nik.html 1、注册应用程序来处理自定义协议          你必须添加一个新的key以及相关的value到HKEY_CLASSES_ROOT中,来使应用程序可以处理特殊的URL协议。          新注册的key必须与协议scheme相匹配才可以...