理解js中的Error

JavaScript017

理解js中的Error,第1张

通过 Error 构造器我们可以创建一个错误对象,当程序运行出错时,Error的实例对象就会被抛出。

注意 : fileName 和 lineNumber 参数是非标准的api,使用时需要注意其兼容。

除了通用的Error构造函数外, js还有6个其他类型的错误构造函数。

另外 : 还有一个非标准的错误构造函数 IntervalError : js引擎内部的错误, 如递归太多.

在Node.js中, 除了标准的js错误之外, 还有以下几类错误:

所有由 Node.js 引起的 JavaScript 错误与系统错误都继承自或实例化自标准的 JavaScript <Error> 类,且保证至少提供类中的属性。

在Node.js或某些浏览器环境中可能会包含 code, stack 等信息

Node.js中 : 对于所有的 EventEmitter 对象,如果没有提供一个 'error' 事件句柄,则错误会被抛出,并造成 Node.js 进程报告一个未处理的异常且随即崩溃,除非: 适当地使用 domain 模块或已经注册了一个 [ process.on('uncaughtException') ] 事件的句柄。

js的执行错误分为 语法syntaxError,和 runtime error,

首先, js引擎会检查 整个脚本的语法, 如果在检查语法的过程中,发现了错误, 比如括哈不配对, 字符串少了 另一半的引号等等, 那么一开始就不会执行...

但是, 语法正确, 脚本开始执行, 并不表示后面的执行过程一直都正确, 因为还会出现运行时的错误, 如: referenceError等错误.

如果你感觉没有语法错误, 而js从某个语句开始, 其后面的语句不能执行, 那么一定是 这个语句之前的 某个地方, 某个语句出错了. 所以 从这个语句开始之后的 代码就不能执行了.

number: 与错误相联的数字值。如果省略则为零。

description: 描述错误的简短字符串。如果省略则为空字符串。

每当产生运行时错误,就产生 Error 对象的一个实例以描述错误。该实例有两个固有属性保存错误的描述(description 属性)和错误号(number 属性)。

错误号是 32 位的值。高 16 位字是设备代码,而低字是实际的错误代码。

Error 对象也可以用如上所示的语法显式创建,或用 throw 语句抛掉。在两种情况下,都可以添加选择的任何属性,以拓展 Error 对象的能力。

典型地,在 try...catch 语句中创建的局部变量引用隐式创建的 Error 对象。因此,可以按选择的任何方法使用错误号和描述。

下面的例子演示了隐式创建 Error 对象的使用:

try

{ x = y // 产生错误。

}catch(e){ // 创建局部变量 e。

response.write(e) // 打印 "[object Error]".

response.write(e.number &0xFFFF) // 打印 5009。

response.write(e.description) // 打印 "'y' is undefined".

}