2014-07-24 165 views
-4

我現在正在移動,因此無法提供代碼。我嘗試使用緩衝區讀取器,我也使用了一些不推薦的方法,這將確保死鎖。我的問題是爲什麼finally塊現在不能執行?Try try-catch-finally

+5

如果它死鎖了,怎麼樣繼續到finally塊? –

+2

因爲當'try'正常或突然結束時'finally'被調用。如果你在'try'中插入死鎖或無限循環或者其他東西,那麼'finally'和'catch'都不會被執行。 – Ordous

+0

該代碼仍在執行..但它是一個僵局......等待資源......因此...... – JNL

回答

0

只有當方法出來try塊時纔會執行finally塊。

TRY - > catch - > finally(always)這就是如何執行這些方法的。

主要是Try-Catch-Finally用於捕獲異常。 死鎖不是例外。 如果有任何異常(Io異常,因爲您正在使用緩衝讀取器)那麼只有您的finally和catch塊會執行(TRY塊已死鎖)。

finally塊保證在try塊(由#Elliott聲明)後運行。

0

finally塊將如果try塊正常完成或發生錯誤。如果你有在try塊中的僵局,那麼就不會達到finally塊如果您在嘗試死鎖執行。

1

阻止finally塊不會運行,因爲finally塊保證在try塊之後運行(不會結束)。舉個例子,如果我願意支付給你100美元從1數到無窮大我永遠不必付錢給你(因爲你在有限的時間內無法計數到無窮大)。確保你獲得並釋放鎖定在相同的訂單無處不在。

+0

哦,我從來沒有讀過這個try塊需要結束。對不起人們打擾..如果我在catch塊或最後阻止塊做同樣的事情呢? –

+0

@ Jump3r死鎖是一種僵局。它不會結束。 –