现在的位置: 首页 > 综合 > 正文

IE浏览器下返回执行错误的Javascript代码所在的问题(js有用)

2014年08月06日 ⁄ 综合 ⁄ 共 1722字 ⁄ 字号 评论关闭

IE6和IE8对Javascript字符串操作的细微差别,今天谈一下在IE浏览器下返回执行错误的Javascript代码所在的问题。其中在IE浏览器下,如果你使用了try-catch,那么当出现异常的时候,IE浏览器会传递一个Error对象。

<script>

    try{

        sldfj

    }catch(e){

        for(var p in e){

            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。

javascript Error 对象 错误处理

Error对象

Property:

name: 错误名

number: 错误号

description: 描述

message: 错误信息,多同description

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()中

抛出Error:

throw new Error(0,”Error Demo”);

new Error可省略:

throw(“Error Demo”);

捕获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,所以各浏览器厂家对其的支持都不同。

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(“错误提示”);}

抱歉!评论已关闭.