首頁 >web前端 >js教程 >javascript捕捉異常的方法有哪些

javascript捕捉異常的方法有哪些

青灯夜游
青灯夜游原創
2021-07-19 18:52:568222瀏覽

方法:1、使用try catch finally語句,語法「try{//調試程式碼區塊}catch(e) {//擷取處理異常}finally{//後期清理程式碼區塊}」;2、使用視窗物件window的onerror事件。

javascript捕捉異常的方法有哪些

本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

javascript捕獲異常的方法

JavaScript#的異常主要使用try catch finally語句以及視窗物件 windowonerror事件來捕獲。

try catch finally

#try catch finally只能擷取執行階段的錯誤,無法擷取語法錯誤,可以拿到出錯的訊息,堆疊,出錯的檔案、行號、列號。 try catch finally語句標記要嘗試的語句區塊,並指定一個出現例外狀況時拋出的回應。

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) { // 非标准
       catch_statements
    }]
*/

透過Error的建構器可以建立一個錯誤對象,當執行階段錯誤產生時,Error的實例物件會被拋出,Error 物件也可用於使用者自訂的例外的基礎對象,Js內建了幾種標準錯誤類型:

  • EvalError: 建立一個error實例,表示錯誤的原因:與eval()有關。
  • RangeError: 建立一個error實例,表示錯誤的原因:數值變數或參數超出其有效範圍。
  • ReferenceError: 建立一個error實例,表示錯誤的原因:無效引用。
  • SyntaxError: 建立一個error實例,表示錯誤的原因:eval()在解析程式碼的過程中發生的語法錯誤。
  • TypeError: 建立一個error實例,表示錯誤的原因:變數或參數不屬於有效類型。
  • URIError: 建立一個error實例,表示錯誤的原因:給encodeURI()decodeURl()傳遞的參數無效。

window.onerror

#window.onerror可以捕捉語法錯誤,也可以捕捉執行階段錯誤,可以拿到出錯的訊息,堆疊,出錯的檔案、行號、列號,只要在目前window執行的Js腳本出錯都會捕捉到,透過window .onerror可以實現前端的錯誤監控。出於安全性方面的考慮,當載入自不同網域的腳本中發生語法錯誤時,語法錯誤的細節將不會報告。

/*
    message:错误信息(字符串)。
    source:发生错误的脚本URL(字符串)
    lineno:发生错误的行号(数字)
    colno:发生错误的列号(数字)
    error:Error对象(对象)
    若该函数返回true,则阻止执行默认事件处理函数。
*/
window.onerror = function(message, source, lineno, colno, error) { 
    // onerror_statements
}

/*
    ErrorEvent类型的event包含有关事件和错误的所有信息。
*/
window.addEventListener('error', function(event) { 
    // onerror_statements
})

【推薦學習:javascript進階教學

以上是javascript捕捉異常的方法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn