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,判斷為空的語句通過,判斷是否數字的語句拋出異常
通過上面的例子可以發現,異常場景都在我們的控制范圍之內,
不會出現什么未知和突然中斷程序的異常
通過上面有異常捕獲和沒有異常捕獲的情況對比來看,
沒有捕獲處理異常的情況,非常不友好,程序也缺少健壯性
