Error Objects

2018-06-16 15:48 更新

Error对象的实例在运行时遇到错误的情况下会被当做异常抛出。Error对象也可以作为用户自定义异常类的基对象。

The Error Constructor Called as a Function

 当Error被作为函数而不是构造器调用时,它创建并初始化一个新的Error对象。这样函数调用Error(…)与同样参数的对象创建表达式new Error(…)是等效的。

Error (message)

 新构造的对象内部属性Prototype会被设为原本的Error原型对象,也就是Error.prototype的初始值。(15.11.3.1)

 新构造的对象内部属性Class会被设为"Error"。

 新构造的对象内部属性Extensible会被设为true。

 如果形参message不是undefined,新构造的对象本身属性message则被设为ToString(message)。

The Error Constructor

 当Error作为new表达式的一部分被调用时,它是一个构造器:它初始化新创建的对象。

new Error (message)

 新构造的对象内部属性Prototype会被设为原本的Error原型对象,也就是Error.prototype的初始值。(15.11.3.1)

 新构造的对象内部属性Class会被设为"Error"。

 新构造的对象内部属性Extensible会被设为true。

 如果形参message不是undefined,新构造的对象本身属性message则被设为ToString(message)。

Properties of the Error Constructor

 Error构造器的内部属性Prototype值为Function原型对象(15.3.4)。

 除内部属性和length属性(其值为1)以外,Error构造器还有以下属性:

Error.prototype

 Error.prototype的初始值为Error原型对象(15.11.4)。

 此属性有以下特性: { Writable: false, Enumerable: false, Configurable: false }。

Properties of the Error Prototype Object

 Error原型对象本身是一个Error对象(其Class为"Error")。

 Error原型对象的内部属性Prototype为标准内置的Object原型对象(15.2.4)。

Error.prototype.constructor

 Error.prototype.constructor初始值为内置的Error构造器。

Error.prototype.name

 rror.prototype.name初始值为"Error"。

Error.prototype.message

 Error.prototype.message初始值为空字符串。

Error.prototype.toString ( )

 执行以下步骤

  1. 令o为this值
  2. 如果Type(O)不是对象,抛出一个TypeError异常。
  3. 令name为以"name"为参数调用O的Get内置方法的结果。
  4. 如果name为undefined, 令name为"Error";否则令name为ToString(name)。
  5. 令msg为以"message"为参数调用O的Get内置方法的结果。
  6. 如果msg为undefined,令msg为空字符串;否则令msg为ToString(msg)。
  7. 如果name与msg都是空字符串,返回"Error"。
  8. 如果name为空字符串,返回msg。
  9. 如果msg为空字符串,返回name。
  10. 返回拼接name,":",一个空格字符,以及msg的结果。

Error实例的属性

 Error实例从Error原型对象继承属性,且它们的内部属性class值为"Error"。Error实例没有特殊属性。

Native Error Types Used in This Standard

 以下原生Error对象之一会在运行时错误发生时被抛出。所有这些对象共享同样的结构,如15.11.7所述。

EvalError

 本规范现在已经不再使用这个异常,这个对象保留用于跟规范之前版本的兼容性。

RangeError

 表示一个数值超出了允许的范围,见15.4.2.2, 15.4.5.1, 15.7.4.2, 15.7.4.5, 15.7.4.6, 以及15.7.4.7, 15.9.5.43.

ReferenceError

 表示一个不正确的引用值被检测到。见8.7.1, 8.7.2, 10.2.1, 10.2.1.1.4, 10.2.1.2.4, 以及 11.13.1

SyntaxError

 表示一个解析错误发生。见11.1.5, 11.3.1, 11.3.2, 11.4.1, 11.4.4, 11.4.5, 11.13.1, 11.13.2, 12.2.1, 12.10.1, 12.14.1, 13.1, 15.1.2.1, 15.3.2.1, 15.10.2.2, 15.10.2.5, 15.10.2.9, 15.10.2.15, 15.10.2.19, 15.10.4.1, 以及15.12.2

TypeError

 表示一个操作数的真实类型与期望类型不符。见8.6.2, 8.7.2, 8.10.5, 8.12.5, 8.12.7, 8.12.8, 8.12.9, 9.9, 9.10, 10.2.1, 10.2.1.1.3, 10.6, 11.2.2, 11.2.3, 11.4.1, 11.8.6, 11.8.7, 11.3.1, 13.2, 13.2.3, 15, 15.2.3.2, 15.2.3.3, 15.2.3.4, 15.2.3.5, 15.2.3.6, 15.2.3.7, 15.2.3.8, 15.2.3.9, 15.2.3.10, 15.2.3.11, 15.2.3.12, 15.2.3.13, 15.2.3.14, 15.2.4.3, 15.3.4.2, 15.3.4.3, 15.3.4.4, 15.3.4.5, 15.3.4.5.2, 15.3.4.5.3, 15.3.5, 15.3.5.3, 15.3.5.4, 15.4.4.3, 15.4.4.11, 15.4.4.16, 15.4.4.17, 15.4.4.18, 15.4.4.19, 15.4.4.20, 15.4.4.21, 15.4.4.22, 15.4.5.1, 15.5.4.2, 15.5.4.3, 15.6.4.2, 15.6.4.3, 15.7.4, 15.7.4.2, 15.7.4.4, 15.7.4.8 [?], 15.9.5, 15.9.5.44, 15.10.4.1, 15.10.6, 15.11.4.4 以及 15.12.3

URIError

 表示全局URI处理函数被以不符合其定义的方式使用。见 15.1.3。

NativeError对象结构

 当ECMAScript实现探测到一个运行时错误时,它抛出一个15.11.6所定义的NativeError对象的实例。每个这些对象都有如下所述结构,不同仅仅是在name属性中以构造器名称替换掉NativeError,以及原型对象由实现自定义的message属性。

 对于每个错误对象,定义中到NativeError的引用应当用15.11.6中具体的对象名替换。

NativeError Constructors Called as Functions

 当NativeError被作为函数而不是构造器调用时,它创建并初始化一个新的NativeError对象。这样函数调用NativeError(…)与同样参数的对象创建表达式new NativeError(…)是等效的。

NativeError (message)

 新构造的对象内部属性Prototype会被设为这一错误构造器附带的原型对象。新构造的对象内部属性Class会被设为"Error"。新构造的对象内部属性Extensible会被设为true。

 如果形参message不是undefined,新构造的对象本身属性message则被设为ToString(message)。

The NativeError Constructors

 当NativeError作为new表达式的一部分被调用时,它是一个构造器:它初始化新创建的对象。

New NativeError (message)

 新构造的对象内部属性Prototype会被设为这一错误构造器附带的原型对象。新构造的对象内部属性Class会被设为"Error"。新构造的对象内部属性Extensible会被设为true。

 如果形参message不是undefined,新构造的对象本身属性message则被设为ToString(message)。

Properties of the NativeError Constructors

 NativeError构造器的内部属性Prototype值为Function原型对象(15.3.4)。

 除内部属性和length属性(其值为1)以外,Error构造器还有以下属性:

NativeError.prototype

 NativeError.prototype的初始值为一个Error(15.11.4)。

 此属性有以下特性: { Writable: false, Enumerable: false, Configurable: false }。

Properties of the NativeError Prototype Objects

 每个NativeError的prototype的初始值为一个Error(其Class为"Error")。

 NativeError原型对象的内部属性Prototype为标准内置的Error对象(15.2.4)。

NativeError.prototype.constructor

 对于特定的NativeError,Error.prototype.constructor初始值为NativeError构造器本身。

NativeError.prototype.name

 对于特定的NativeError,Error.prototype.name初始值为构造器的名字。

NativeError.prototype.message

 对于特定的NativeError,NativeError.prototype.message初始值为空字符串。

 NativeError构造器的原型他们自身并不提供toString函数,但是错误的实例可以从Error原型对象继承到它。

NativeError实例的属性

 NativeError实例从NativeError原型对象继承属性,且它们的内部属性class值为"Error"。Error实例没有特殊属性。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号