2012-09-28 20 views
1

我有一個非常簡單的問題。我沒有使用它,但我有好奇心知道答案。只有當異常得到捕獲時,我們才能在catch塊中執行多個語句嗎?我的意思是在下面的代碼中,兩個語句都會執行或不執行?讓我添加一些代碼片段,以清除它。在catch塊中的多重聲明

我已經找到這個鏈接,但沒有給我我的問題的答案。 link Click Here

上面的鏈接我在這個問題中發現的問題由某人提出,但它有非常模糊的代碼,所以很難理解。 stackoverflow Link

try { 
    int x = doXProcess(); 
    int y = doYProcess(); 
} catch (Exception e) { 
    System.out.println("Error related x: " x + e.printStackTrace()); 
    System.out.println("Error related y: " y + e.printStackTrace()); 
} 

感謝您的幫助和時間。

+0

使用調試器來查看它是如何工作的;-) –

+0

不,我沒有嘗試過。在工作中,我遇到了這種情況。我知道如何處理它,但是這個代碼只是好奇心。 – Smit

回答

3

try塊中看到多條語句是很常見的。

如果第一行出現異常,則不執行第二行。執行停止在引發異常的任何行;在該塊中沒有超過該點的行被執行 - 執行直接進入catch塊。

如果從catch塊中拋出異常,則執行再次停止在發生異常的行。如果定義了一個,則從那裏轉到finally區塊。

+0

所以在這種情況下,當異常得到時,下面的語句被執行,然後程序將停止執行。捕捉塊甚至不想執行下一個語句。 System.out.println(「Error related x:」x + e.printStackTrace()); – Smit

+0

@smit - 不,你去catch塊並開始在那裏執行... – hvgotcodes

+0

:--->是的我得到了答案。我已經做了實驗,我找到了答案,但目前的stackoverflow不讓我發佈答案。我會在稍後發佈。謝謝你的幫助。 – Smit

5

您可以在處理異常的代碼塊中明確執行幾行代碼。

但是,請注意您的代碼不能編譯。

1

是的,你可以。 N個語句可以執行。

1

是的,catch塊中的所有語句在捕獲到異常時執行。