1. 程式人生 > >JS異常捕獲和拋出

JS異常捕獲和拋出

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異常捕獲和拋出