按照Oracle文檔試用資源是否可能無法關閉資源?
try-with-resources語句是聲明一個或多個資源的try語句。資源是一個對象,在程序結束後必須關閉。 try-with-resources語句確保每個資源在語句結束時都關閉。實現java.lang.AutoCloseable的任何對象,包括實現java.io.Closeable所有對象,可以用來作爲資源
如果資源沒有實現AutoCloseable不能try塊內聲明的,必須在正文部分&中聲明必須在finally塊中明確關閉。 是否有可能嘗試與資源無法清理資源,除非像使用嵌套資源那樣錯誤地使用習語& close()調用對於底層資源不是冪等的嗎? 我的理解是try-with-resource只能確保close()在場景後面被調用,但如果關閉本身並沒有關閉底層資源,那麼嘗試使用資源對於清理資源仍然不起作用。 有沒有人有相反的觀點或更多的澄清?
您是否可以爲您認爲可能出現故障的情況生成代碼? – djechlin
這可能歸結爲「什麼時候終止塊不能運行」(這是非常罕見的,基本上只是像System.exit那樣它應該無關緊要的情況)? – Thilo
另請注意,所有試用資源都是調用'close'方法。如果該方法正確地完成其工作是另一個問題。 – Thilo