JavaScript try catch finally詳解與配合return的使用

大家都知道Java裏有try語句,可以方便的捕捉錯誤並方便程序員使用,在ECMA-262中也正式引用了這一特性,用來給廣大程序員在代碼層上一層“保險”。

用法如下:

try {
    tryCode - 嘗試執行代碼塊
}
catch(e) {
    catchCode - 捕獲錯誤的代碼塊
} 
finally {
    finallyCode - 無論 try / catch 結果如何都會執行的代碼塊
}

執行過程爲try-catch(try中捕捉到錯誤執行)-finally(結束必執行),其中catch與finally可選,catch中參數e爲JavaScript Error,程序員可以將其捕捉並繼續向下執行,而不是被錯誤打斷。

參數e具有以下屬性:

description: 錯誤描述 (僅IE可用).

fileName: 出錯的文件名 (僅Mozilla可用).

lineNumber: 出錯的行數 (僅Mozilla可用).

message: 錯誤信息 (在IE下同description)

name: 錯誤類型.

number: 錯誤代碼 (僅IE可用).

stack: 像Java中的Stack Trace一樣的錯誤堆棧信息 (僅Mozilla可用).

 

如果和return結合起來呢,接下來以一段代碼闡述:

function foo(){
  try{
    return false
  }
  finally{
    return true
  }
}

這段代碼執行效果如下

是不是感覺很疑惑,明明返回的是false但打印結果是true,注意這條規則:不管 try 語句是否完全執行,finally 語句最後都必須要執行,即使使用了跳轉語句跳出了異常處理結構,也必須在跳出之前先執行 finally 子句。

看下一個示例:

function bar(){
  try{
    baz();
  }
  catch{
    return false;
  }
  finally{
    return true
  }
}

打印結果如下:

同樣也印證了上面規則,finally作爲異常判斷的整體必在最後執行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章