錯誤型別

JavaScript 中有六個特定的核心錯誤建構函式:

  • EvalError - 建立一個例項,表示關於全域性函式 eval() 發生的錯誤。

  • InternalError - 建立一個例項,表示在引發 JavaScript 引擎中的內部錯誤時發生的錯誤。例如過多的遞迴。 (僅受 Mozilla Firefox 支援 )

  • RangeError - 建立一個例項,表示當數字變數或引數超出其有效範圍時發生的錯誤。

  • ReferenceError - 建立一個例項,表示解除引用無效引用時發生的錯誤。

  • SyntaxError - 建立一個例項,表示在解析 eval() 中的程式碼時發生的語法錯誤。

  • TypeError - 建立一個例項,表示當變數或引數不是有效型別時發生的錯誤。

  • URIError - 建立一個例項,表示當 encodeURI()decodeURI() 傳遞無效引數時發生的錯誤。

如果你正在實現錯誤處理機制,你可以檢查從程式碼中捕獲的錯誤型別。

try {
    throw new TypeError();
}
catch (e){
    if(e instanceof Error){
        console.log('instance of general Error constructor');
    }

    if(e instanceof TypeError) {
        console.log('type error');
    }
}

在這種情況下,e 將是 TypeError 的一個例項。所有錯誤型別都擴充套件了基礎建構函式 Error,因此它也是 Error 的一個例項。

牢記這一點向我們表明,在大多數情況下,將 e 視為 Error 的例項是沒用的。