17 错误处理与调试

2016-09-08  本文已影响19人  闷油瓶小张

本章内容

17.1 浏览器报告的错误

17.1.1 IE

17.1.2 Firefox

17.1.3 Safari

17.1.4 Opera

17.1.5 Chrome

17.2 错误处理

17.2.1 try-catch 语句

基本的语法如下所示:

try{
  //可能会导致错误的代码
} catch(error) {
  //在错误发生时怎么处理
}
  1. finally子句
    finally子句一经使用,其代码无论如何都会执行。无论trycatch语句块中包含什么代码--甚至return语句,都不会阻止finally子句的执行。
function testFinally () {
  try {
    return 2;
  } catch (error) {
    return 1;
  } finally {
    return 0;
  }
}
  1. 错误类型
    利用不同的错误类型,可以获悉更多有关异常的信息,从而有助于对错误作出恰当的处理。
try {
  someFunction();
} catch (error) {
  if (error instanceof TypeError) {
    //处理类型错误
  } else if (error instanceof ReferenceError) {
    //处理引用错误
  } else {
    //处理其他类型的错误
  }
}
  1. 合理使用 try-catch
    使用try-catch最适合处理那些我们无法控制的错误。

17.2.2 抛出错误

try-catch语句相配的还有一个throw操作符,用于随时抛出自定义错误。抛出错误时,必须要给throw操作符指定一个值。
在遇到throw操作符时,代码会立即停止执行。仅当有try-catch语句捕获到被抛出的值时,代码才会继续执行。
通过使用某种内置错误类型,可以更真实地模拟浏览器错误。

throw new Error('error');
throw new SyntaxError("syntax");
throw new TypeError('type');
  1. 抛出错误的时机
  2. 抛出错误与使用try-catch

17.2.3 错误(error)事件

任何没有通过try-catch处理的错误都会触发window对象的error事件。

17.2.4 处理错误的策略

17.2.5 常见的错误类型

一般来说,需要关注三种错误:

  1. 类型转换错误
    该错误发生在使用某个操作符、或者使用其他可能会自动转换值得数据类型的语言结构时。
  2. 数据类型错误
    在将预料之外的值传递给函数的情况下,最容易发生数据类型错误。
  3. 通信错误
    JavaScript 与服务器之间的任何一次通信,都有可能会产生错误。
    对于查询字符串,应该记住必须要使用encodeURIComponent()方法。为了确保这一点,有时候可以定义一个处理查询字符串额函数。例如:
function addQueryStringArg(url, name, value) {
  if (url.indexOf("?") == -1) {
    url += "?";
  } else {
    url += "&";
  }
  url += encodeURIComponent(name) + "=" + encodeURIComponent(value);
  return url;
}

17.2.6 区分致命错误和非致命错误

17.2.7 把错误记录到服务器

17.3 调试技术

不再建议在调试中使用alert()了。

17.3.1 将消息记录到控制台

一般可通过console对象向 JavaScript 控制台中写入消息,这个对象具有下列方法。

17.3.2 将消息记录到当前页面

在页面中开辟一小块区域,用以显示消息。

17.3.3 抛出错误

17.4 常见的 IE 错误

17.4.1 操作终止

17.4.2 无效字符

17.4.3 未找到成员

17.4.4 未知运行时错误

17.4.5 语法错误

17.4.6 系统无法找到指定资源

17.5 小结

下面是几种避免浏览器响应 JavaScript 错误的方法。

上一篇 下一篇

猜你喜欢

热点阅读