在javascript中一旦代碼解析或運行時發生錯誤,javascript引擎就會自動產生並拋出一個Error對象的實例,然后整個程序就中斷在發生錯誤的地方。
Error對象的實例有三個基本的屬性:
name:錯誤名稱
message:錯誤提示信息
stack:錯誤棧
Error對象是最一般的錯誤類型,在它的基礎上,javascript還定義了其他6種錯誤:
①、SyntaxError
解析代碼時發生的語法錯誤,比如變量名錯誤、缺少括號等。
②、ReferenceError
引用一個不存在的變量時發生的錯誤或者將一個值分配給無法分配的對象,比如對函數的運行結果或者this賦值。
③、RangeError
當一個值超出有效范圍時發生的錯誤,主要有數組長度為負數、number對象的方法參數超出范圍、函數堆棧超過最大值。
④、TypeError
當變量或參數不是預期類型時發生的錯誤,比如對字符串、布爾值、數值等原始類型的值使用new命令就會拋出這種錯誤。
⑤、URIError
當URI相關函數的參數不正確時拋出的錯誤,主要涉及encodeURI、decodeURI、encodeURIComponent、encodeURIComponent、escape、unescape這六個函數。
⑥、EvalError
eval函數沒有被正確執行時拋出此錯誤,該錯誤類型已經不再在ES5中出現了,只是為了保證與以前代碼兼容才繼續保留。
以上這六種派生錯誤連同原始的Error對象,都是構造函數,開發者可以使用它們人為生成錯誤對象實例。
自定義錯誤:
1 function UserError(message){ 2 this.message = message || '默認信息'; 3 this.name = 'UserError'; 4 } 5 UserError.prototype = new Error(); 6 UserError.prototype.constructor = UserError;