JS錯誤類型的學習

(1)SyntaxError數組

SyntaxError是解析代碼時發生的語法錯誤ide

// 變量名錯誤 
var 1a; 
// 缺乏括號 
console.log 'hello');

(2)ReferenceError函數

ReferenceError是引用一個不存在的變量時發生的錯誤。this

unknownVariable 
// ReferenceError: unknownVariable is not defined

另外一種觸發場景是,將一個值分配給沒法分配的對象,好比對函數的運行結果或者this賦值。spa

console.log() = 1 
// ReferenceError: Invalid left-hand side in assignment 
this = 1 
// ReferenceError: Invalid left-hand side in assignment

上面代碼對函數console.log的運行結果和this賦值,結果都引起了ReferenceError錯誤code

(3)RangeErrororm

RangeError是當一個值超出有效範圍時發生的錯誤。主要有幾種狀況,一是數組長度爲負數,二是Number對象的方法參數超出範圍,以及函數堆棧超過最大值。對象

new Array(-1) 
// RangeError: Invalid array length 
(1234).toExponential(21) 
// RangeError: toExponential() argument must be between 0 and 20

(4)TypeError開發

TypeError是變量或參數不是預期類型時發生的錯誤。好比,對字符串、布爾值、數值等原始類型的值使用new命令,就會拋出這種錯誤,由於new命令的參數應該是一個構造函數。字符串

new 123 
//TypeError: number is not a func 
var obj = {}; obj.unknownMethod() 
// TypeError: undefined is not a function

上面代碼的第二種狀況,調用對象不存在的方法,會拋出TypeError錯誤。

(5)URIError

URIError是URI相關函數的參數不正確時拋出的錯誤,主要涉及encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()這六個函數。

decodeURI('%2') 
// URIError: URI malformed

(6)EvalError

eval函數沒有被正確執行時,會拋出EvalError錯誤。該錯誤類型已經再也不在ES5中出現了,只是爲了保證與之前代碼兼容,才繼續保留。

以上這6種派生錯誤,連同原始的Error對象,都是構造函數。開發者能夠使用它們,人爲生成錯誤對象的實例。

new Error("出錯了!"); 
new RangeError("出錯了,變量超出有效範圍!");
new TypeError("出錯了,變量類型無效!");

上面代碼表示新建錯誤對象的實例,實質就是手動拋出錯誤。能夠看到,錯誤對象的構造函數接受一個參數,表明錯誤提示信息(message)。

相關文章
相關標籤/搜索