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è)用戶自定義的異常。當(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ò)誤類型:
TypeError
:(類型錯(cuò)誤)對(duì)象用來(lái)表示值的類型非預(yù)期類型時(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變量的相關(guān)問(wèn)題
這篇文章主要給大家介紹了關(guān)于Javascript變量的相關(guān)問(wèn)題,文中給出了詳細(xì)的介紹和示例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們下面來(lái)一起看看吧。2017-01-01javascript function調(diào)用時(shí)的參數(shù)檢測(cè)常用辦法
js中并不直接支持類似c#的方法重載,所以只能變相的來(lái)解決,示意代碼:(利用了內(nèi)置屬性arguments)2010-02-02新人報(bào)道,發(fā)個(gè)小技巧(js數(shù)組重復(fù)判斷)
js數(shù)組重復(fù)判斷2008-10-10一文教你用JavaScript制作個(gè)簡(jiǎn)單的大轉(zhuǎn)盤游戲
日常生活中,我們經(jīng)常會(huì)見(jiàn)到形形色色的抽獎(jiǎng)活動(dòng),例如九宮格、大轉(zhuǎn)盤等等……本文就來(lái)教大家如何利用JavaScript制作個(gè)簡(jiǎn)單的大轉(zhuǎn)盤游戲,感興趣的可以了解一下2023-02-02鍵盤上一張下一張兼容IE/google/firefox等瀏覽器
鍵盤上一張下一張的效果想必大家都有見(jiàn)到過(guò)吧,本文為大家介紹的這個(gè)兼容IE,google,firefox等主流瀏覽器2014-01-01js實(shí)現(xiàn)卡片式項(xiàng)目管理界面UI設(shè)計(jì)效果
這篇文章主要介紹了js實(shí)現(xiàn)卡片式項(xiàng)目管理界面UI設(shè)計(jì)效果,該UI設(shè)計(jì)中,將各個(gè)項(xiàng)目以卡片的方式堆疊排列在屏幕上,當(dāng)點(diǎn)擊了其中的某個(gè)項(xiàng)目的時(shí)候,該項(xiàng)目圖片會(huì)全屏放大,向下滾動(dòng)鼠標(biāo)可以看到該項(xiàng)目的介紹信息,需要的朋友可以參考下2015-12-12