javascript Error对象详解
今天谈一下在IE浏览器下返回执行错误的Javascript代码所在的问题。其中在IE浏览器下,如果你使用了try-catch,那么当出现异常的时候,IE浏览器会传递一个Error对象。 ~~~怎么通过Error对象获取更多信息(如:错误描述 错误行数) 帮助调试是我们比较关心的
<script>
try{
sldfj
}catch(e){
for(var p in e){ // ~~~error对象的属性都是可枚举的?
document.writeln(p + "=" + e[p]);
}
}
</script>输出:name=TypeError message='sldfj' 未定义 number=-2146823279 description='sldfj' 未定义
其中的number属性是一个整数,表示的是错误码,但这并不是真正的错误码,我们需要先将其做一下转换
var errCode = err.number& x0FFFF; 这得到真正的错误码,例如上述的-2146823279 转换之后就得到5009。有了这个错误码之后,我们可以到http://msdn.microsoft.com/en-us/library/1dk3k160(VS.85).aspx微软msdn上查找此错误码对应的。5009对应的错误是Undefined identifier。
~~~ error.name错误名称 ;error.description错误描述; error.number非真正的错误码 需要做个位运算 error.number&x0ffff才得到真正的错误码;
~~~个人觉得 error.name , error.description , error.message会比较有参考意义
javascript Error 对象 错误处理
Error对象
Property:
name: 错误名
number: 错误号
description: 描述
message: 错误信息,多同description
~~~firefox的error对象和ie的error对象有不同的属性
FF Only 属性
fileName: 错误发生的文件
stack: 错误发生时的调用堆栈
Constructor:
Error(){
this(0,"")}
Error(description){
this(0,description)}
Error(number,description){
....}
构造函数参数不带name,是因为Error对象的name对应于它的来源:
EvalError: 错误发生在eval()中
SyntaxError: 语法错误,错误发生在eval()中,因为其它点发生SyntaxError会无法通过解释器
RangeError: 数值超出范围
ReferenceError: 引用不可用
TypeError: 变量类型不是预期的
URIError: 错误发生在encodeURI()或decodeURI()中
~~~开发人员主动抛出异常 throw new Error('error demo'); 或 throw ('error demo');
抛出Error:
throw new Error(0,"Error Demo");
new Error可省略:
throw("Error Demo");
~~~异常的捕获 try{}catch(e){}finally{}
捕获Error:
try catch finally语句:
try{
..可能错误的语句..}
catch(e){
..错误发生后的处理..}
finally{
..完成后执行的语句块..}
finally不是必须的
如果嵌套,两个catch不要使用同一个参数名,以免覆盖
传入的参数是一个Error对象,可以从中得到错误信息
FF支持一个try多个catch,因为Js为弱类型不推荐使用
window.onerror错误捕获:
window.onerror=function(Msg,Url,Num){}
onerror事件会传给回调函数3个默认参数
Msg: 错误信息
Url: 发生错误的文件的Url
Num: 错误发生位置的行号
~~~window.onerror还能处理SyntaxError,比try catch更强大。
但是onerror属于bom,所以各浏览器厂家对其的支持都不同。 ~~~ onerror属于BOM
如IE发生error时,正常的代码会继续执行;在FF中,代码将结束;Safari只支持Image的onerror事件处理。
Image.onerror
onerror还可以应用于其它HTMLElement上,最常见的是<img />元素
<img src="sample.jpg" onerror="javascript:alert('图像载入错误');" />
处理Error:
判断错误类型:
catch(e){
if(e.name=="RangeError")
alert("错误提示");}
或
catch(e){
if(e instanceof TypeError)
alert("错误提示");}
javascript Error对象详解的更多相关文章
- js 错误Error对象详解
一.概念 error,指程序中的非正常运行状态,在其他编程语言中称为"异常"或"错误".解释器会为每个错误情形创建并抛出一个Error对象,其中包含错误的描述信 ...
- javaScript document对象详解
Document对象内容集合 document 文挡对象 - JavaScript脚本语言描述———————————————————————注:页面上元素name属性和JavaScript引用的名称必 ...
- JavaScript的对象详解
JavaScript对象的概述 什么是对象,代表现实中的某个事物, 是该事物在编程中的抽象,多个数据的集合体(封装体),用于保存多个数据的容器 为什么要用对象,便于对多个数据进行统一管理 对象属于一种 ...
- JavaScript arguments对象详解
1. 什么是 arguments MDN 上解释: arguments 是一个类数组对象.代表传给一个function的参数列表. 我们先用一个例子直观了解下 JavaScript 中的 argume ...
- (转)javascript中event对象详解
原文:http://jiajiale.iteye.com/blog/195906 javascript中event对象详解 博客分类: javaScript JavaScriptCS ...
- js对象详解(JavaScript对象深度剖析,深度理解js对象)
js对象详解(JavaScript对象深度剖析,深度理解js对象) 这算是酝酿很久的一篇文章了. JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕 ...
- JavaScript进阶知识点——函数和对象详解
JavaScript进阶知识点--函数和对象详解 我们在上期内容中学习了JavaScript的基本知识点,今天让我们更加深入地了解JavaScript JavaScript函数 JavaScript函 ...
- jQuery的deferred对象详解(一)
最近一段时间,都在研究jquery里面的$.Deffered对象,几天都搞不明白,其中源码的运行机制,网上查找了相关的资料,<jQuery的deferred对象详解>阮一峰老师的文章,里面 ...
- [转]javascript console 函数详解 js开发调试的利器
javascript console 函数详解 js开发调试的利器 分步阅读 Console 是用于显示 JS和 DOM 对象信息的单独窗口.并且向 JS 中注入1个 console 对象,使用该 ...
随机推荐
- 转换成CSV文件、Word、Excel、PDF等的方法--读取CSV文件的方法
1. 转换成CSV文件: http://www.dotnetgallery.com/lab/resource93-Export-to-CSV-file-from-Data-Table-in-Aspne ...
- 用ssh建立机器之间的信任机制
继续整理以前的博客,第二弹:用ssh建立机器之间的信任机制 #!/bin/bash #需要远程添加信任机制的机器 REMOTE[]=db-XXX-XXX1.db01 REMOTE[]=db-XXX-X ...
- 编码神器 Sublime Text 包管理工具及扩展大全
Sublime Text 是程序员们公认的编码神奇,拥有漂亮的用户界面和强大的功能,例如代码缩略图,多重选择,快捷命令等.还可自定义键绑定,菜单和工具栏.Sublime Text 的主要功能包括:拼写 ...
- UCML破解
最近一直加班,好久没更新了.无良的产品经理一直催着修改功能,本想把活带回家做..结果...公司就一个UCML的加密狗...闹心....想办法破解: 1.狗复制,这个没搞过,某宝上有帮忙复制的,联系了一 ...
- [转]spring 监听器 IntrospectorCleanupListener简介
"在服务器运行过程中,Spring不停的运行的计划任务和OpenSessionInViewFilter,使得Tomcat反复加载对象而产生框架并用时可能产生的内存泄漏,则使用Introspe ...
- static_cast,const_cast,dynamic_cast,reinterpret_cast
除非必要,尽量不要对变量进行强制转换.这是因为强制转换是存在风险的,但实际上在某种情况下,转型是必需的. 旧式C转型方式为(type)expression,即由一对小括号加上一个对象名称组成,而这种语 ...
- Hibernate知识总结(一)——Hibernate原理概述
一.Hibernate是什么: 它是一个持久化框架,它对JDBC进行了轻量级的封装,简化对数据库的操作,提高开发效率.和另一个持久化框架MyBatis一样,他们操作数据库都是通过一个session对象 ...
- ;(function( $, window, undefined ){ }(jQuery,window))为何需要往里面传$,window,undefined这些参数
(function( $, jQuery , undefined ) {})(jQuery); 为什么要将window和undefined作为参数传给它? 因为 ecmascript 执行JS代码是从 ...
- glib源码安装使用方法
glib库是GTK+和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库,它提供C语言的常用的数据结构的定义.相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事 ...
- Ceph相关博客、网站(256篇OpenStack博客)
官网文档: http://docs.ceph.com/docs/master/cephfs/ http://docs.ceph.com/docs/master/cephfs/createfs/ ( ...