跟在try-with-resources
之後的catch
是否覆蓋初始化部分還不清楚。try-with-resources中的捕獲是否覆蓋括號中的代碼?
換句話說,考慮下面的代碼段:
try (InputStream in = getSomeStream()) {
System.out.println(in.read());
} catch (IOException e) {
System.err.println("IOException: " + e.getMessage());
}
我會被catch
如果IOException
拋出內getSomeStream()
調用?
還是catch
只覆蓋大括號內的塊,即System.out.println(in.read())
?
摘自:https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html 「一次嘗試與資源語句可以有漁獲物和finally塊就像一個普通的try語句。在try-with-resources語句中,任何catch或finally塊都在聲明的資源關閉後運行。「 這意味着您的catch-block將照常進行處理。之後您只需要關心資源將被關閉,因爲在達到捕獲前會發生這種情況。 – DiabolicWords
@DiabolicWords我錯過了什麼嗎?該段中是否有答案回答這個問題? – Michael