javascript错误处理

记录一下javascript错误处理的笔记。
  1. 常见的错误类型 由于javascript是松散类型的,而且也不会验证函数的参数,因此错误只会在代码运行阶段出现,一般来说,需要特别关注三种错误类型:
    • 数据转换错误 常见情况有两种:
      1. 一是使用相等和不相等操作符引发的类型转换,解决方案是使用全等和不全等;
      2. 二是流程控制中使用非布尔值,解决方案是使用恰当的比较;
    • 数据类型错误 建议:
      1. 流程控制语句中不要使用非布尔值;
      2. 不要将参数与null和undefined比较;
      3. 在确切知道应该传入什么类型的情况下,最好使用instance of来检测数据类型
    • 通信错误
      1. 最常见的就是在将数据发送给服务器之前,没有使用encodeURIComponent对数据进行编码;
      2. 另外,在服务器响应的数据不正确时,也会也会发生同性错误,比如动态加载脚本和样式的时候;
  2. 错误的处理
    • try-catch语句 try-catch语句的标准样式是:
      try{ //可能导致错误的代码 }catch{ //在错误发生时怎么处理 }
      try-catch语句有一个可选的finally子句,finally语句一经使用,其代码无论如何都会执行,即使在try或catch语句中包含return语句。使用finally语句后,catch语句就成了可选的了。 与try-catch相配的还有throw操作符,用于随时抛出自定义错误,throw操作符是阻塞型的,遇到throw操作符时,代码会立即停止执行。
    • error语句 任何没通过try-catch语句处理的错误都会触发window对象的error事件,这个事件并不是所有的浏览器都支持,其中opera和safari就不支持,IE、chrome和Firefox则支持。
    • 把错误记录到服务器 这一点在《打造FACEBOOK》一书中也提到了,facebook有一套高效的错误处理工具,可以对错误进行归类、评估,及时提醒相关负责人等,这在大型互联网公司中应该都有,我还没接触过,比较感兴趣,大概的机制应该是ajax发送到后台。
  3. 调试技术
    • 将消息记录到控制台(用浏览器自带的调试工具调试,如firebug,我一般用chrome自带的)
    • 将消息记录到当前页(这个应该没必要)
    • 抛出错误(视情况而定,大型错误通常使用assert()函数抛出自定义错误)
posted @ 2013-03-28 20:47  echoHUST  阅读(165)  评论(0编辑  收藏  举报