Error Objects

2018-06-16 15:48 更新

Error對象的實例在運行時遇到錯誤的情況下會被當做異常拋出。Error對象也可以作為用戶自定義異常類的基對象。

The Error Constructor Called as a Function

 當Error被作為函數(shù)而不是構造器調用時,它創(chuàng)建并初始化一個新的Error對象。這樣函數(shù)調用Error(…)與同樣參數(shù)的對象創(chuàng)建表達式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表達式的一部分被調用時,它是一個構造器:它初始化新創(chuàng)建的對象。

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 ( )

 執(zhí)行以下步驟

  1. 令o為this值
  2. 如果Type(O)不是對象,拋出一個TypeError異常。
  3. 令name為以"name"為參數(shù)調用O的Get內置方法的結果。
  4. 如果name為undefined, 令name為"Error";否則令name為ToString(name)。
  5. 令msg為以"message"為參數(shù)調用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對象之一會在運行時錯誤發(fā)生時被拋出。所有這些對象共享同樣的結構,如15.11.7所述。

EvalError

 本規(guī)范現(xiàn)在已經不再使用這個異常,這個對象保留用于跟規(guī)范之前版本的兼容性。

RangeError

 表示一個數(shù)值超出了允許的范圍,見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

 表示一個解析錯誤發(fā)生。見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

 表示一個操作數(shù)的真實類型與期望類型不符。見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處理函數(shù)被以不符合其定義的方式使用。見 15.1.3。

NativeError對象結構

 當ECMAScript實現(xiàn)探測到一個運行時錯誤時,它拋出一個15.11.6所定義的NativeError對象的實例。每個這些對象都有如下所述結構,不同僅僅是在name屬性中以構造器名稱替換掉NativeError,以及原型對象由實現(xiàn)自定義的message屬性。

 對于每個錯誤對象,定義中到NativeError的引用應當用15.11.6中具體的對象名替換。

NativeError Constructors Called as Functions

 當NativeError被作為函數(shù)而不是構造器調用時,它創(chuàng)建并初始化一個新的NativeError對象。這樣函數(shù)調用NativeError(…)與同樣參數(shù)的對象創(chuàng)建表達式new NativeError(…)是等效的。

NativeError (message)

 新構造的對象內部屬性Prototype會被設為這一錯誤構造器附帶的原型對象。新構造的對象內部屬性Class會被設為"Error"。新構造的對象內部屬性Extensible會被設為true。

 如果形參message不是undefined,新構造的對象本身屬性message則被設為ToString(message)。

The NativeError Constructors

 當NativeError作為new表達式的一部分被調用時,它是一個構造器:它初始化新創(chuàng)建的對象。

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函數(shù),但是錯誤的實例可以從Error原型對象繼承到它。

NativeError實例的屬性

 NativeError實例從NativeError原型對象繼承屬性,且它們的內部屬性class值為"Error"。Error實例沒有特殊屬性。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號