您好,登錄后才能下訂單哦!
這篇文章主要介紹“javascript捕獲異常有哪些方法”,在日常操作中,相信很多人在javascript捕獲異常有哪些方法問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”javascript捕獲異常有哪些方法”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
方法:1、使用try catch finally語(yǔ)句,語(yǔ)法“try{//調(diào)試代碼塊}catch(e) {//捕獲處理異常}finally{//后期清理代碼塊}”;2、使用窗口對(duì)象window的onerror事件。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
JavaScript
的異常主要使用try catch finally
語(yǔ)句以及窗口對(duì)象window
的onerror
事件來(lái)捕獲。
try catch finally
try catch finally
只能捕獲運(yùn)行時(shí)的錯(cuò)誤,無(wú)法捕獲語(yǔ)法錯(cuò)誤,可以拿到出錯(cuò)的信息,堆棧,出錯(cuò)的文件、行號(hào)、列號(hào)。try catch finally
語(yǔ)句標(biāo)記要嘗試的語(yǔ)句塊,并指定一個(gè)出現(xiàn)異常時(shí)拋出的響應(yīng)。
try{ // try_statements throw new TypeError("Test"); }catch (e){ // catch_statements console.log("catch_statements"); if(e instanceof TypeError){ // handle this expected error console.log("handle this expected error"); }else{ // handle unexpected error console.log("handle unexpected error"); } }finally{ // finally_statements console.log("finally_statements"); } /* 注: [catch (e if e instanceof TypeError) { // 非標(biāo)準(zhǔn) catch_statements }] */
通過(guò)Error
的構(gòu)造器可以創(chuàng)建一個(gè)錯(cuò)誤對(duì)象,當(dāng)運(yùn)行時(shí)錯(cuò)誤產(chǎn)生時(shí),Error
的實(shí)例對(duì)象會(huì)被拋出,Error
對(duì)象也可用于用戶自定義的異常的基礎(chǔ)對(duì)象,Js
內(nèi)建了幾種標(biāo)準(zhǔn)錯(cuò)誤類(lèi)型:
EvalError
: 創(chuàng)建一個(gè)error
實(shí)例,表示錯(cuò)誤的原因:與eval()
有關(guān)。
RangeError
: 創(chuàng)建一個(gè)error
實(shí)例,表示錯(cuò)誤的原因:數(shù)值變量或參數(shù)超出其有效范圍。
ReferenceError
: 創(chuàng)建一個(gè)error
實(shí)例,表示錯(cuò)誤的原因:無(wú)效引用。
SyntaxError
: 創(chuàng)建一個(gè)error
實(shí)例,表示錯(cuò)誤的原因:eval()
在解析代碼的過(guò)程中發(fā)生的語(yǔ)法錯(cuò)誤。
TypeError
: 創(chuàng)建一個(gè)error
實(shí)例,表示錯(cuò)誤的原因:變量或參數(shù)不屬于有效類(lèi)型。
URIError
: 創(chuàng)建一個(gè)error
實(shí)例,表示錯(cuò)誤的原因:給encodeURI()
或decodeURl()
傳遞的參數(shù)無(wú)效。
window.onerror
window.onerror
可以捕捉語(yǔ)法錯(cuò)誤,也可以捕捉運(yùn)行時(shí)錯(cuò)誤,可以拿到出錯(cuò)的信息,堆棧,出錯(cuò)的文件、行號(hào)、列號(hào),只要在當(dāng)前window
執(zhí)行的Js
腳本出錯(cuò)都會(huì)捕捉到,通過(guò)window.onerror
可以實(shí)現(xiàn)前端的錯(cuò)誤監(jiān)控。出于安全方面的考慮,當(dāng)加載自不同域的腳本中發(fā)生語(yǔ)法錯(cuò)誤時(shí),語(yǔ)法錯(cuò)誤的細(xì)節(jié)將不會(huì)報(bào)告。
/* message:錯(cuò)誤信息(字符串)。 source:發(fā)生錯(cuò)誤的腳本URL(字符串) lineno:發(fā)生錯(cuò)誤的行號(hào)(數(shù)字) colno:發(fā)生錯(cuò)誤的列號(hào)(數(shù)字) error:Error對(duì)象(對(duì)象) 若該函數(shù)返回true,則阻止執(zhí)行默認(rèn)事件處理函數(shù)。 */ window.onerror = function(message, source, lineno, colno, error) { // onerror_statements } /* ErrorEvent類(lèi)型的event包含有關(guān)事件和錯(cuò)誤的所有信息。 */ window.addEventListener('error', function(event) { // onerror_statements })
到此,關(guān)于“javascript捕獲異常有哪些方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(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)容。