javascript錯誤類型
阿新 • • 發佈:2019-02-23
編碼 item uri name eval() val row 導致 fun
ECMA-262 定義了下列 7 種錯誤類型,簡單說明如下:
- Error:普通異常。通常與 throw 語句和 try/catch 語句一起使用。 利用屬性 name 可以聲明或了 解異常的類型,利用 message 屬性可以設置和讀取異常的詳細信息。
- EvalError: 在不正確使用 eval()方法時拋出。
- SyntaxError:拋出語法錯誤。
- RangeError:在數字超出合法範圍時拋出。
- ReferenceError:在讀取不存在的變量時拋出 。
- TypeError:當一個值的類型錯誤時拋出該異常。
- URLError:由 URL 的編碼和解碼方法拋出。
其中 Error 是基類,其他錯誤類型都繼承自該類型。因此,所有錯誤類型共享了一組相同的屬性, 錯誤對象中的方法全是默認的對象方法。 Error 類型的錯誤很少見,如果有也是瀏覽器拋出的,這個基類 型的主要目的是供開發人員拋出自定義錯誤。
EvalError 類型的錯誤會在使用 eval()函數發生異常時被拋出。
//如果沒有把 eval()當成函數調用,就會拋出該類型錯誤。 new eval(); //拋出 EvalError eval=foo; //拋出 EvalError
RangeError 類型的錯誤會在數值超出相應範圍時觸發。 JavaScript 中經常會出現這種範圍錯誤。
//在定義數組時,如果指定了數組不支持的項數,如-20 或 Number.MAX VALUE,就會 觸發這種錯誤。 var itemsl = new Array(-20); //拋出RangeErrorvar itemsl = new Array (Number.MAX_VALUE); //拋出RangeError
在找不到對象的情況下,會發生 ReferenceError。
//在訪問不存在的變量時,就會發生這種錯誤。 var obj = x; //在 x 並未聲明的情況下拋出 ReferenceError
SyntaxError 表示語法類型錯誤, 當把語法錯誤的 JavaScript 字符串傳入 eval()函數時,就會導致此類錯誤。
eval ("a ++ b") //拋出 SyntaxError
Type Error類型在 JavaScript 中會經常用到,在變量中保存著意外的類型時,或者在訪問不存在的方法時,都會導致這種錯誤。錯誤的原因雖然多種多樣,但歸根結底還是由於在執行特定類型的操作時, 變量的類型並不符合要求所致。
//最常發生類型錯誤的情況,就是傳遞給函數的參數事先未經檢查,結果傳入類型與預期類型不相符。 var o = new 10; //拋出 TypeError alert ("name" in true); //拋出 TypeError Function.prototype.toString.call (’name ’); //拋出 TypeError
在使用 encodeURL()或 decodeURL()時,如果 URL 格式不正確,就會導致 URIError 錯誤。這種錯誤也很少見,因為這兩個函數的容錯性非常高。
javascript錯誤類型