JavaScript錯(cuò)誤處理try..catch...finally+涵蓋throw+TypeError+RangeError
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è)用戶(hù)自定義的異常。當(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ì)拋出三種異常:TypeError,RangeError,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)
}
到此這篇關(guān)于JavaScript錯(cuò)誤處理try..catch...finally+涵蓋throw+TypeError+RangeError的文章就介紹到這了,更多相關(guān)JavaScript錯(cuò)誤處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javaScript 判斷字符串是否為數(shù)字的簡(jiǎn)單方法
javascript在通過(guò)parseIn或parseFloat將字符串轉(zhuǎn)化為數(shù)字的過(guò)程中,如果字符串中包含有非數(shù)字,那么將會(huì)返回NaN,參考下面代碼2009-07-07
JavaScript面試Module?Federation實(shí)現(xiàn)原理詳解
這篇文章主要為大家介紹了JavaScript面試Module?Federation實(shí)現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
js實(shí)現(xiàn)QQ面板拖拽效果(慕課網(wǎng)DOM事件探秘)(全)
這篇文章主要為大家詳細(xì)介紹了QQ面板拖拽效果,探秘慕課網(wǎng)DOM事件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
prettier自動(dòng)格式化去換行的實(shí)現(xiàn)代碼
這篇文章主要介紹了prettier自動(dòng)格式化去換行的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
JS實(shí)現(xiàn)水平移動(dòng)與垂直移動(dòng)動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)水平移動(dòng)與垂直移動(dòng)動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
JS+CSS實(shí)現(xiàn)高亮關(guān)鍵詞(不侵入DOM)的方式
這篇文章主要為大家詳細(xì)介紹了JS+CSS實(shí)現(xiàn)高亮關(guān)鍵詞(不侵入DOM)的方式,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12
js與jquery實(shí)時(shí)監(jiān)聽(tīng)輸入框值的oninput與onpropertychange方法
這篇文章主要介紹了js與jquery實(shí)時(shí)監(jiān)聽(tīng)輸入框值的oninput與onpropertychange方法,實(shí)例分析了oninput與onpropertychange實(shí)現(xiàn)下拉框里自動(dòng)匹配關(guān)鍵字實(shí)時(shí)監(jiān)聽(tīng)文本框value值變化的功能,需要的朋友可以參考下2015-02-02
js全選實(shí)現(xiàn)和判斷是否有復(fù)選框選中的方法
這篇文章主要介紹了js全選實(shí)現(xiàn)和判斷是否有復(fù)選框選中的方法,涉及javascript操作復(fù)選框的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02
淺析Virtual DOM的概念與其在現(xiàn)代前端框架中的實(shí)踐
這篇文章將深入探討Virtual DOM(虛擬DOM)的概念,分析其對(duì)前端開(kāi)發(fā)的革新影響,并以此展示前端技術(shù)的深度和魅力,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12
Elasticsearch實(shí)現(xiàn)復(fù)合查詢(xún)高亮結(jié)果功能
這篇文章主要介紹了Elasticsearch實(shí)現(xiàn)復(fù)合查詢(xún),高亮結(jié)果功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09

