JS異常捕獲和拋出
阿新 • • 發佈:2018-06-18
bubuko 例子 就是 bsp 示例 isn 信息 分號 com
try...catch 用來異常捕獲(主要適用於IE5以上內核的瀏覽器,也是最常用的異常捕獲方式)
使用onerror時間捕獲異常,這種捕獲方式是比較古老的一中方式,目前一些主流的瀏覽器暫不支持這種
捕獲方式。
捕獲異常的語法如下:
try {
//運行代碼
} catch(err) {
//處理錯誤
}
測試示例代碼如下,abc是一個未定義的函數,會拋出異常,異常信息會被try catch,進入catch語句中執行
var msg = ""; try{ abc(); }catch(err){ console.log(err) console.log(err.message); }
如果把try catch 去掉的話 ,會出現什麽情況呢?
控制臺報錯了 ,而且後續中斷沒有執行,因為添加的日誌打印信息沒有執行,。針對
這種沒有捕獲的異常,會異常中斷程序,頁面上沒有合理的提示信息,用戶會莫名其妙
體驗非常不好。
以上是針對try catch的使用方法的描述,還有一種情況就是,需要自定義一個異常然後拋出,
比如某個條件不符合或是值為空的情況,需要拋出異常,提示用戶,暫停後續程序的執行,
這種情況就需要throw一個exception
var num = "a"; try { if(num==" ") throw "值為空"; //剛才這個地方的分號寫成中文狀態下的分號,結果出出錯了if(isNaN(num)) throw "不是數字"; } catch(err){ alert("錯誤信息:"+err); }
刷新瀏覽器,看看throw出來的異常提示信息,就是我們定義的錯誤信息“不是數字”,
因為num的值為a,判斷為空的語句通過,判斷是否數字的語句拋出異常
通過上面的例子可以發現,異常場景都在我們的控制範圍之內,
不會出現什麽未知和突然中斷程序的異常
通過上面有異常捕獲和沒有異常捕獲的情況對比來看,
沒有捕獲處理異常的情況,非常不友好,程序也缺少健壯性
JS異常捕獲和拋出