事实证明,几乎没有人正确关闭 Java 中的资源。程序员要么根本不使用try-finally
块,要么只是放入resource.close()
也不finally
正确的块(因为Throwable
来自try 块的close()
阴影)。Throwable
有时他们把 with 之类的东西IOUtils.closeQuietly()
只对 for InputStream
,而不是 for OutputStream
。try-with-resources
解决了所有这些问题,但仍有大量项目是用 Java 6 编写的。
try-with-resources
在 Java 6中模拟的最佳方法是什么?现在我使用Guava Closer,它比没有好,但仍然比try-with-resources
. 此外,还有一种称为贷款模式的模式,但 Java 中缺少 lambda 使得这种模式非常麻烦。有没有更好的办法?