浏览器报告的错误

写此文时chrome已经成了市场主流浏览器(可见百度浏览器统计数据), 书中讲的浏览器版本比较旧也比较多, 这里不再讲解, 大家以chrome为标准即可.

错误处理

try-catch-finally

  1. try{
  2. //...
  3. } catch(error){
  4. console.log(error);
  5. }finally {
  6. // 一定会执行的代码
  7. }

抛出错误

与 try-catch 语旬相配的还有一个 throw 操作符,用于随时抛出自定义错误。抛出错误时,必须要给 throw 操作符指定一个值,这个值是什么类型,没有要求。下列代码都是有效的。

throw 12345;
throw "Hello world!"; throw true;
throw { name: "JavaScript"};

在遇到 throw 操作符时,代码会立即停止执行。仅当有 try-catch 语旬捕获到被抛出的值时,代码才会继续执行

错误事件

任何没有通过 try-catch 处理的错误都会触发 window 对象的 error 事件。在任何 Web 浏览器中,onerror 事件处理程序都不会创建 event 对象, 但它可以接收三个参数:错误消息、错误所在的 URL 和行号。多数情况下,只有错误消息有用,因为URL 只是给出了文档的位置,而行号所指的代码行既可能出自嵌入的 JavaScript 代码,也可能出自外部的文件。要指定 onerror 事件处理程序,必须使用如下所示的 DOM0 级技术,它没有遵循“DOM2 级事件"的标准格式。

window.onerror = function(message, url, line){ 
  alert(message);
};

常见错误类型

错误处理的核心,是首先要知道代码里会发生什么错误。由于 JavaScript 是松散类型的,而且也不会验证函数的参数,因此错误只会在代码运行期间出现。一般来说,需要关注三种错误:

  • 类型转换错误
  • 数据类型错误
  • 通信错误

本章完