我也接觸過一段代碼,看起來像這樣嵌套try塊 - 這有用嗎?
try
{
try (SomeResource res = new SomeResource())
{
// "\(o.o)/" *BOO*
}
}
catch (SomeException e)
{
e.letsNotIgnoreTheException();
}
我想不出理由只有一個使用兩個試塊。沒有人問我可以想到一個。
我離開了懷疑,這是否僅僅是 需要一些重構的梅索德,或者如果確實發生了一些要用到的外試(尤其是因爲我發現了好幾次,但話又說回來, 有人可能只是誤解了試用資源)。
Jiri,這是我的第一個推測,但我測試了它,這是不正確的 - 嘗試與資源是*不*就像一個finally塊一樣,資源在** catch和finally之前關閉**。請參閱文本「任何catch或finally塊在聲明的資源已關閉後運行」。在oracle文檔中... – vikingsteve
@vikingsteve我站在更正,謝謝你指出我。 –
不用擔心。這實際上改變了我的理解,因爲嘗試資源不是*「技術上」*與最終塊相同,儘管在大多數情況下它不應該是重要的。我今天也學到了一些新東西:) – vikingsteve