【发布时间】:2012-12-07 15:36:06
【问题描述】:
我目前正在 java 中做类似的事情来释放资源。我需要在 BufferedWriter 对象上调用 close 还是在析构函数中调用它?关于 Resource1 和 Resource2,我必须恭敬地调用 release 和 free。这是嵌套尝试的正确方法吗? Python 有一个非常好的“with 语句”,它将资源与代码范围相关联。 java有喜欢的吗?
Resource1 r1 = new Resource1();
try
{
...
Resource2 r1 = new Resource2();
try
{
...
java.io.BufferedWriter f = new java.io.BufferedWriter(new java.io.FileWriter(new java.io.File("f")));
try
{
...
}
finally
{
f.close();
}
}
finally
{
r2.release();
}
}
finally
{
r1.free();
}
更新: 我正在使用 Java 1.6
【问题讨论】:
-
Java 7 已尝试使用资源功能,从您的问题中不清楚您使用的是哪个 Java 版本docs.oracle.com/javase/7/docs/technotes/guides/language/…
-
@djechlin 我已经用谷歌搜索了...
-
@Baz 我将您的问题的标题复制并粘贴到 Google 中,第一个点击是我投票关闭的重复链接。
-
@djechlin 那篇文章非常令人困惑。在两个例子中,异常被吞没了。还有另外两个 cmets/examples 提到你永远不应该吞下一个异常。哪个是对的?对于 Java 1.6,您会使用该帖子中的哪个示例?