溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JavaScript中錯(cuò)誤處理try..catch...finally+涵蓋throw+TypeError+RangeError的示例分析

發(fā)布時(shí)間:2021-12-29 12:52:23 來(lái)源:億速云 閱讀:192 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹JavaScript中錯(cuò)誤處理try..catch...finally+涵蓋throw+TypeError+RangeError的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

1.用途

通常,如果發(fā)生錯(cuò)誤,腳本就會(huì)立即停止,并在控制臺(tái)將錯(cuò)誤打印出來(lái)。

有了這個(gè)語(yǔ)句就可以捕獲錯(cuò)誤并執(zhí)行合理操作,可以讓程序繼續(xù)執(zhí)行下去

2.語(yǔ)法

try {
  // 代碼...
} catch (err) {
   //err是有關(guān)錯(cuò)誤詳細(xì)信息的對(duì)象
  // 錯(cuò)誤捕獲,上面代碼報(bào)錯(cuò)就會(huì)轉(zhuǎn)到這個(gè)代碼塊,而不會(huì)停止運(yùn)行
} finally {
   //無(wú)論是否有異常拋出或捕獲它總是執(zhí)行
}

這種語(yǔ)句可以嵌套

3.實(shí)操

Catch 捕獲所有 error

如果我們不知道如何處理它,那我們就 throw err。

throw 操作符會(huì)生成一個(gè) error 對(duì)象。

用來(lái)拋出一個(gè)用戶自定義的異常。當(dāng)前函數(shù)的執(zhí)行將被停止(throw之后的語(yǔ)句將不會(huì)執(zhí)行),并且控制將被傳遞到調(diào)用堆棧中的第一個(gè)Catch塊。如果調(diào)用者函數(shù)中沒(méi)有catch塊,程序?qū)?huì)終止。

示例:

throw "Error1"; // 拋出了一個(gè)值為字符串的異常
throw 4;       // 拋出了一個(gè)值為整數(shù)4的異常
 
/*JavaScript 中有很多內(nèi)建的標(biāo)準(zhǔn) error 的構(gòu)造器:Error,SyntaxError,ReferenceError,TypeError 等。我們也可以使用它們來(lái)創(chuàng)建 error 對(duì)象。*/
let error = new Error("Things happen o_O");
alert(error.name); // Error
alert(error.message); // Things happen o_O
//json的異常
try {
  JSON.parse("{ bad json o_O }");
} catch(e) {
  alert(e.name); // SyntaxError
  alert(e.message); // Unexpected token b in JSON at position 2
}

補(bǔ)充:

try塊的代碼可能會(huì)拋出三種異常:TypeErrorRangeError,SyntaxError

有同學(xué)可能不知道這三個(gè)的意思,這里說(shuō)明下

這兩個(gè)都是全局對(duì)象,全局的對(duì)象本身不包含任何方法, 然而它通過(guò)原型鏈繼承了一些方法.

instanceof 操作符用于判斷錯(cuò)誤類(lèi)型:

  • TypeError:(類(lèi)型錯(cuò)誤)對(duì)象用來(lái)表示值的類(lèi)型非預(yù)期類(lèi)型時(shí)發(fā)生的錯(cuò)誤

  • RangeError: 對(duì)象標(biāo)明一個(gè)錯(cuò)誤,當(dāng)一個(gè)值不在其所允許的范圍或者集合中

  • SyntaxError: 當(dāng)Javascript語(yǔ)言解析代碼時(shí),Javascript引擎發(fā)現(xiàn)了不符合語(yǔ)法規(guī)范的tokens或token順序時(shí)拋出

實(shí)例:

catch (e) {//以下是這個(gè)對(duì)象的參數(shù)屬性
  console.log(e instanceof TypeError); // true
  console.log(e.message);              // "描述此錯(cuò)誤"
  console.log(e.name);                 // "TypeError"
  console.log(e.fileName);             // "引起該異常的代碼所在的文件的名字"
  console.log(e.lineNumber);           // 引起該異常的代碼的行號(hào)
}

以上是“JavaScript中錯(cuò)誤處理try..catch...finally+涵蓋throw+TypeError+RangeError的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI