方法:1、使用try catch finally語句,語法「try{//調試程式碼區塊}catch(e) {//擷取處理異常}finally{//後期清理程式碼區塊}」;2、使用視窗物件window的onerror事件。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
JavaScript
#的異常主要使用try catch finally
語句以及視窗物件 window
的onerror
事件來捕獲。
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中文網其他相關文章!