try with resources
在Android上不可用,
如果您要定位各种设备,
所以我想用这样的语义模拟类似的东西:
无异常-关闭,如果关闭失败,则引发异常
有异常-关闭并忽略关闭异常
这样的代码是否可以按我的意愿工作,或者我错过了什么?并且可能以某种方式简化它吗?
final Closeable closebale = ...;
try {
//work with closeable
} catch (IOException e) {
try {
closeable.close();
} catch (IOException e2) {
//log exception
}
closeable = null;
throw e;
} finally {
if (closeable != null) {
//we not catch any exception
closeable.close();
}
}
最佳答案
Java的历史模式是:
Closeable foo = null;
try
{
foo = ...;
...
}
finally
{
if (foo != null)
{ foo.close(); }
}
如果希望捕获并处理或禁止尝试关闭资源期间发生的任何异常,可以将对
.close()
的调用放在try-catch
块中。我建议不要抑制异常。至少您应该记录它们。