溫馨提示×

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

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

javascript捕獲異常有哪些方法

發(fā)布時(shí)間:2021-07-21 10:47:26 來(lái)源:億速云 閱讀:158 作者:chen 欄目:web開(kāi)發(fā)

這篇文章主要介紹“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捕獲異常的方法

JavaScript的異常主要使用try catch finally語(yǔ)句以及窗口對(duì)象windowonerror事件來(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í)用的文章!

向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