javascript
JS错误类型的学习
(1)SyntaxError
SyntaxError是解析代碼時發生的語法錯誤
//?變量名錯誤? var?1a;? //?缺少括號? console.log?'hello');(2)ReferenceError
ReferenceError是引用一個不存在的變量時發生的錯誤。
unknownVariable? //?ReferenceError:?unknownVariable?is?not?defined另一種觸發場景是,將一個值分配給無法分配的對象,比如對函數的運行結果或者this賦值。
console.log()?=?1? //?ReferenceError:?Invalid?left-hand?side?in?assignment? this?=?1? //?ReferenceError:?Invalid?left-hand?side?in?assignment上面代碼對函數console.log的運行結果和this賦值,結果都引發了ReferenceError錯誤
(3)RangeError
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)。
總結
- 上一篇: DOM0,DOM2,DOM3事件,事件基
- 下一篇: js中的异常处理try...catch使