2016-03-31 18 views
1

我有一個測試,我想執行。無論它傳遞還是拋出一個錯誤,我都想關閉它打開的一個案例。我在類的頂部String theCase = null; 然後在executeText()中,一旦大小寫打開,我就設置它。終於沒有抓到

所以我這樣做:

try { 
    executeTest(tContext); 
} catch (Throwable t) { 
    throw t; 
} finally { 
    if (theCase != null) { 
     closeCase(user, theCase); 
    } 
} 

我想知道。我需要捕捉(可拋出t)嗎?我仍然希望拋出這個錯誤,但首先我想讓它結案。如果我不抓住它扔掉它,最後會不會扔掉它?或者它會不會被捕獲並拋出異常而不執行finally?最後我有點不清楚。

+0

這是Java嗎? try-catch-finally塊的行爲在不同的語言(C#,Java等)中有所不同。 – metacubed

回答

2

我是否需要catch(Throwable t)?

不,你不知道。

事實上,它是有害的,因爲如果你像這樣捕獲並拋出Throwable,那麼對於某些Java版本,你將需要聲明封閉方法爲throws Throwable ...等等。 (這是在Java 8中的地址,IIRC。)

1

無論是否拋出異常,或者是否從catch塊重新拋出,都將最終執行。