JavaScript错误处理操作实例详解

  

本文实例讲述了JavaScript错误处理操作。分享给大家供大家参考,具体如下:

  

良好的错误处理机制可以让用户得到及时的提醒,所以让我们来看看JavaScript提供了哪些针对错误处理的工具和方法吧O (∩_∩) O ~

  

1 try - catch语句

  

ecma - 262第3版引入了try - catch语句,这时JavaScript处理异常的标准方式:

        尝试{//可能会导致错误的代码   }捕捉(错误){//错误处理   }      之前      

如果试块中的代码发生了错误,会立即执行catch块的代码。catch块有一个包含错误信息的对象,它有一个消息属性,表示的是浏览器给出的错误消息:

        & lt;脚本type=" text/javascript祝辞   尝试{   window.someNonexistenceFunction ();   }捕捉(错误){   console.log (error.message);   }   & lt;/script>      之前      

消息属性是所有的浏览器都支持的属性,所以在跨浏览器编程中,最好只使用这个属性。

  

1.1最后子句

  

最后子句是可选的,如果使用了最后子句,里面包含的代码是绝对会被执行的!甚至连返回语句都无法阻止它被执行:

        & lt;脚本type=" text/javascript祝辞   函数testFinally () {   尝试{   返回2;   }捕捉(错误){   返回1;   最后}{   返回0;   }   }   console.log (testFinally ());//0   & lt;/script>      之前      

IE7及更早的版本有一个缺陷:除非有catch子句,否则最后中的代码永远不会被执行! IE8修复了这个bug。

  

注意:只要在代码中使用了最后子句,那么不管返回放在尝试还是抓住语句中,都会被忽略!

  

1.2错误类型

  

当错误发生时,会抛出相应类型的错误对象.ecma - 262定义了7种错误类型:

  
      <李> 错误   <李> EvalError李   <李> RangeError李   <李> ReferenceError李   <李> SyntaxError李   <李> TypeError李   <李> URIError李   
  

<强> 1.2.1误差

  

错误是基类型,即其他的错误类型都是从错误继承来的。可以利用错误来自定义错误类型。

  

<强> 1.2.2 EvalError

  
  

EvalError是在使用eval()函数发生异常时被抛出。怎么才算是异常呢?如果没有把eval()当作函数来使用,就会抛出EvalError:

           新eval();//抛出EvalError   eval=foo;//抛出EvalError      之前      

实际开发中很少这样使用<代码> eval() 函数的(除非脑袋秀逗了O (∩_∩) O ~),所以很少会遇到EvalError。

  

<强> 1.2.3 RangeError

  

RangeError会在数值超出规定范围时被抛出。比如在定义数组时,指定了数组不支持的数组项数,就会抛出这个错误:

        var item1=new Array(-20);//抛出RangeError   var item1=new Array (Number.MAX_VALUE);//抛出RangeError      之前      

<强> 1.2.4 ReferenceError

  

找不到对象时,会抛出ReferenceError(这就是浏览器的知名的“对象预期”错误)。一般在访问不存在的变量时,会抛出这个错误:

        var obj=x;//x还未被声明,所以抛出ReferenceError      之前      

<强> 1.2.5 SyntaxError

  

如果把带着错误语法的字符串传入<代码> eval() 函数时,就会抛出SyntaxError:

        eval (“a + + b”);//抛出SyntaxError      之前      

在<代码> eval() 函数之外的语法错误,会导致JavaScript立即停止执行,所以不会抛出这个错误!

  

<强> TypeError相对于1.2.6

  

如果变量中保存着意外的类型,或者访问不存在的方式时,就会抛出。这个错误比较常见:

        var o=new 10;//抛出TypeError   警报(真正的“名称”);//抛出TypeError   Function.prototype.toString.call("名称");//抛出TypeError      之前      

如果传递给函数的参数类型与预期类型不符,也会抛出这个错误。

  

<强> 1.2.7 URIError编写

  

使用<代码> encodeURI() 或者<代码> decodeURI() 时,URI的格式不正确,就会抛出URIError错误。一般很少发生,因为这两个函数有着非常高的容错性O (∩_∩) O ~

JavaScript错误处理操作实例详解