2014-06-28 26 views
2

我想知道java try-catch語句的執行路徑,並且無法找到有關以下情況的詳細信息。Java:是否嘗試執行所有行,或跳到捕捉?

如果我有一個說法,如:

try { 

    // Make a call that will throw an exception 
    thisWillFail(); 

    // Other calls below: 
    willThisExecute(); 

} catch (Exception exception) { 
    // Catch the exception 
} 

下面thisWillFail()行,只要一個例外是移動到catch或try語句跳轉到捕獲的意志執行前執行拋出?

換句話說,假設調用'a'不會在try語句中拋出異常,那麼可以安全地假定在調用'a'之後調用'b'會執行嗎?

感謝

+2

什麼阻止你嘗試它? – Pshemo

+0

沒什麼,只是時間,但我認爲這對其他人也是一個有用的問題,因爲我沒有很容易找到答案。 – Xebozone

回答

6

否,thisWillFail()以下的行不會執行。執行將移至catch塊。

+0

我選擇了你的答案,因爲它是正確的,即使其他答案也是正確和有用的。 – Xebozone

4

如果包含try子句中的任何條款產生一個錯誤,catch子句中的代碼(相當於這個錯誤 - 你可以有一個嘗試多個catch)將被執行。沒有辦法事先知道特定的子句是否會失敗,只有在錯誤發生後才嘗試恢復。

換句話說,只要thisWillFail()函數拋出異常,catch子句就會被執行,從而繞過willThisExecute()函數。

1

你爲什麼不自己測試一下呢?

一旦拋出異常,try塊將被放棄,並在catch/finally語句處繼續執行。