- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) >
- JavaScript 中的錯誤對象類(lèi)型有哪些
這期內容當中小編將會(huì )給大家帶來(lái)有關(guān)JavaScript 中的錯誤對象類(lèi)型有哪些,文章內容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
屬性
Error 對象具有2個(gè)屬性:
(1) name ——設置或返回錯誤名稱(chēng)。具體來(lái)說(shuō),它返回錯誤所屬的構造函數的名稱(chēng)。
它有6個(gè)不同的值-EvalError,RangeError,ReferenceError,TypeError,SyntaxError,URIError。我們將在本文后面討論這些內容,這些所有錯誤類(lèi)型均繼承自Object-> Error-> RangeError。
(2) message-設置或返回錯誤消息
事例
1. 通用的錯誤
我們可以使用Error對象創(chuàng )建一個(gè)新的Error,然后使用throw關(guān)鍵字顯式拋出該錯誤。
2. 處理特定的錯誤類(lèi)型
我們還可以使用如下的instanceof關(guān)鍵字來(lái)處理特定的錯誤類(lèi)型。
3. 自定義錯誤類(lèi)型
我們還可以通過(guò)創(chuàng )建繼承Error對象的類(lèi)來(lái)定義自己的錯誤類(lèi)型。
瀏覽器兼容性
Error 的對象類(lèi)型
現在讓我們討論可用于處理不同錯誤的不同錯誤對象類(lèi)型。
1. EvalError
創(chuàng )建一個(gè)error實(shí)例,表示錯誤的原因:與 eval() 有關(guān)。
這里要注意的一點(diǎn)是,當前ECMAScript規范不支持它,并且運行時(shí)不會(huì )將其拋出。取而代之的是,我們可以使用SyntaxError錯誤。但是,它仍然可以與ECMAScript的早期版本向后兼容。
語(yǔ)法:
new EvalError([message[, fileName[, lineNumber]]])
事例
瀏覽器兼容性
2. RangeError
創(chuàng )建一個(gè)error實(shí)例,表示錯誤的原因:數值變量或參數超出其有效范圍。
new RangeError([message[, fileName[, lineNumber]]])
下面的情況會(huì )觸發(fā)該錯誤:
1)根據String.prototype.normalize(),我們傳遞了一個(gè)不允許的字符串值。
// Uncaught RangeError: The normalization form should be one of NFC, NFD, NFKC, NFKD String.prototype.normalize(“-1”)
2)使用Array構造函數創(chuàng )建非法長(cháng)度的數組
// RangeError: Invalid array length var arr = new Array(-1);
3)諸如 Number.prototype.toExponential(),Number.prototype.toFixed()或Number.prototype.toPrecision()之類(lèi)的數字方法會(huì )接收無(wú)效值。
事例
對于數值:
對于非數值:
瀏覽器兼容性:
3. ReferenceError
創(chuàng )建一個(gè)error實(shí)例,表示錯誤的原因:無(wú)效引用。
new ReferenceError([message[, fileName[, lineNumber]]])
事例:
ReferenceError被自動(dòng)觸發(fā)。
顯式拋出ReferenceError
瀏覽器兼容性
4. SyntaxError
創(chuàng )建一個(gè)error實(shí)例,表示錯誤的原因:eval()在解析代碼的過(guò)程中發(fā)生的語(yǔ)法錯誤。
換句話(huà)說(shuō),當 JS 引擎在解析代碼時(shí)遇到不符合語(yǔ)言語(yǔ)法的令牌或令牌順序時(shí),將拋出SyntaxError。
捕獲語(yǔ)法錯誤:
創(chuàng )建一個(gè)SyntaxError:
瀏覽器兼容性:
5. TypeError
創(chuàng )建一個(gè)error實(shí)例,表示錯誤的原因:變量或參數不屬于有效類(lèi)型。
new TypeError([message[, fileName[, lineNumber]]])
下面情況會(huì )引發(fā) TypeError:
在傳遞和預期的函數的參數或操作數之間存在類(lèi)型不兼容。
試圖更新無(wú)法更改的值。
值使用不當。
例如:
捕獲TypeError:
創(chuàng )建 TypeError:
瀏覽器兼容性:
6. URIError
創(chuàng )建一個(gè)error實(shí)例,表示錯誤的原因:給 encodeURI()或 decodeURl()傳遞的參數無(wú)效。
如果未正確使用全局URI處理功能,則會(huì )發(fā)生這種情況。
簡(jiǎn)單來(lái)說(shuō),當我們將不正確的參數傳遞給encodeURIComponent()或decodeURIComponent()函數時(shí),就會(huì )引發(fā)這種情況。
new URIError([message[, fileName[, lineNumber]]])
encodeURIComponent()通過(guò)用表示字符的UTF-8編碼的一個(gè),兩個(gè),三個(gè)或四個(gè)轉義序列替換某些字符的每個(gè)實(shí)例來(lái)對URI進(jìn)行編碼。
// "https%3A%2F%2Fmedium.com%2F" encodeURIComponent('https://medium.com/');
decodeURIComponent()——對之前由encodeURIComponent創(chuàng )建的統一資源標識符(Uniform Resource Identifier, URI)組件進(jìn)行解碼。
// https://medium.com/ decodeURIComponent("https%3A%2F%2Fmedium.com%2F")
捕捉URIError:
顯式拋出URIError:
瀏覽器兼容性:
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系站長(cháng)郵箱:ts@56dr.com進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2 建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站