javaScript --- Error 物件的詳解
Error:一個一般性的異常。
Error 的構造:
new Error();
new Error(message);
引數:
message:一條可選的錯誤訊息,用於提供關於該異常的細節。
返回:
一個新構建的 Error 物件。如果指定 message 引數,則該 Error 物件將它用做它的 message 屬性值。其他情況下,它將使用一個預定於的預設字串作為該屬性的值。當不使用 new 操作符,直接將 Error() 建構函式像一個函式一樣呼叫時,它的行為和帶 new 操作符呼叫時一樣。
屬性:
message:提供關於該異常的細節的一條錯誤訊息。這個屬性的值為傳給建構函式的字串或一個預定義的預設字串。
name:一個指定該異常的型別的字串。對 Error 類和它所有的子類而言,這個屬性指定了用於建立該例項的建構函式的名字。
方法:
toString():返回一個表示該 Error 物件的預定義字串。
描述:
Error 類例項表示的錯誤或異常通常配合 throw 和 try/catch 語句一起使用。name 屬性指明該異常的型別,message 屬性則提供了該異常的人類可讀細節。
JavaScript 直譯器永遠不會直接丟擲 Error 物件,它只會丟擲 Error 的子類,如 URIError、EvalError、SyntaxError 等。我們通常在自己的程式碼中,丟擲 Error 物件來發出異常資訊會更加方便一些,或者使用一個原始字串或數值來丟擲一條錯誤訊息或是一個錯誤程式碼。
ECMAScript 標準為 Error 類定義了一個 toString()方法,且所有子類都繼承了該方法,但它並不要求 toString() 方法返回的字串包含 message 屬性。所以,不要太依賴或期望 toString() 方法會將一個 Error 物件轉換為一個有意義的、人類可讀的字串。在向用戶顯示錯誤資訊時,我們可以使用 Error 物件的 name 和 message 屬性。
手動異常丟擲:
unction aDemo(x) {
if ( x < 0 ) {
throw new Error("x 小於 0 了");
}
if ( x <= 1 ) {
return 1;
} else {
return x * aDemo( x - 1 )
}
}
如果捕獲一個異常,則可以像下面這麼去做:
try {
aDemo(-1);/* 這兒將丟擲一個異常 */
} catch (e) {
if (e instanceof Error) {
alert(e.name + ":" + e.message);
}
}
例如我們在工作和學習中,常遇到的 Error 有: EvalError、 RangeError、 ReferenceError、 SyntexError、 TypeError、 URIError 。
Error.message:人類可以讀懂的錯誤訊息。如果像 Error() 構造傳入 messgae 引數,則該引數將會時這個 message 屬性的值。如果沒有傳則 Error 物件的這個屬性將繼承預定義的預設值(一般情況下是空)。
Error.name:錯誤的型別。name 屬性為發生錯誤或異常的型別。所有 Error 物件都從他們的建構函式上繼承這個屬性。這個屬性的值和它們的建構函式的名稱相同。也就是說,EvalError 物件的 name 屬性為 “EvalError “,TypeError 物件的 name 屬性為”TypeError”。
Error.toString():將一個 Error 物件轉為字串。ECMAScript 標準化沒有指定這個方法的返回值的任何資訊,返回的字串並不要求包含錯誤名或錯誤訊息。