JS的錯誤捕獲通常有下面兩種方式:
1. 異常捕獲經常使用方法是 try/catch/ throw /finally
2. 全局捕獲window.onerrorjavascript
1. try/catch/throw/finallyjava
try{ //可能捕獲到的錯誤 }catch(e){ //捕獲到錯誤後的處理 }finally{ //完成後執行的語句塊 } // finally不是必須的
若是嵌套,兩個catch不要使用同一個參數名,以避免覆蓋。
傳入的參數是一個Error對象,能夠從中獲得錯誤信息。
FF支持一個try多個catch,由於Js爲弱類型不推薦使用。瀏覽器
try{ throw "error" //表示扔出一個錯誤 }catch(e){ console.log(e) // error }
2.全局捕獲window.onerror
完整寫法:url
// 捕獲全局錯誤onerror window.onerror = handleErr; function handleErr(msg, url, line) { var errorTxt = ""; errorTxt += "Error: " + msg + "\n"; errorTxt += "Line: " + line + "\n"; errorTxt += "Url: " + url + "\n"; alert(errorTxt); return true; }
msg: 錯誤信息
url: 發生錯誤的文件的url
line: 錯誤發生位置的行號
window.onerror還能處理SyntaxError,比try catch更強大。
可是onerror屬於bom,因此各瀏覽器廠家對其的支持都不一樣。
如IE發生error時,正常的代碼會繼續執行;在FF中,代碼將結束;Safari只支持Image的onerror事件處理。code