JavaScript的错误处理

一、错误类型

Error
EvalError
RangeError
ReferenceError
syntaxError 语法错误
TypeError
URIError

Error是基类型,其他错误类型都继承自该对象,因此所有的错误类型都共享一组相同的属性。该错误类型很少见。

EvalError是使用eval()函数而发生的异常抛出的,当没有吧eval()当成一个函数使用的时候就会抛出。

RangeError
数值超出一定的范围会触发,在找不到对象的时候也会触发,在未声明时候去使用变量时候也会触发

TypeError
类型错误,最常见的额类型错误就是传递给函数的参数事先未检查

 

二、try-catch语句

try{
      leaf()
} catch(error){
      console.log(error.message);
}
//leaf is not defined

 

三、finally

可选的,但是一旦使用,其代码无论如何都会执行,即使前面使用了return

try{
        return 1;
}catch(error){
        return 2;
}finally{
         return 3;
}

//chrome下报错了Uncaught SyntaxError: Illegal return statement

 

四、抛出错误  throw操作  

在遇到throw符号的时候,代码会立即执行。仅当try-catch语句捕获到被抛出的值的时候,代码才会继续执行。

 throw new Error('something bad hanppened');

  

五、Error事件
  任何没有通过try-catch处理的错误都会触发window对象的error事件。只要发生错误,无论是不是浏览器生成的,都会触发error事件,并执行这个事件的处理函数。img的没有获得正确的src也会触发。

 

六、常见的错误类型

  1、类型转换错误

  console.log(1==true) //true
  console.log(1==true) //false

       在if()之类的判断语句中,在执行下一步的时候,会自动的把任何值转换成布尔值。

       方案: 建议使用 ===    !== 操作符


       2、数据类型错误

  比如
  null 和undefined 使用点操作
  对非数组的值使用sort()的reversed()等方法

  方案:
  基本类型(undefined null boolean string number)用typeof去检测;
  对象则用instanceof去检测(注意array比较特别)

       3、通信错误
  不正确的使用URL和在服务器响应的数据不正确的时候
  解决,将数据发给服务器应该使用encodeURIComponent()对数据进行编码。

 

七、总结

避免浏览器响应JavaScript错误的方法

  1、在可能发生错误的地方使用try-catch语句,这样有机会以适当的方式对错误给出响应,不必沿用浏览器的错误机制。

  2、是当时会用window.onerror事件处理程序,此方法可以处理try-catch不能处理的所有错误。

  3、发生书错误的主要原因
       类型转换,
  未充分检测数据类型
  发送到服务器或从服务器接收的数据有误

 

posted @ 2017-07-22 13:55  leaf+  阅读(437)  评论(0编辑  收藏  举报