我想安全地关闭资源而不是传播异常。到目前为止,我想出了两个解决方案。
解决方案1
FileObject sourceDir = null;
FileObject targetDir = null;
BufferedWriter bw = null;
BufferedReader br = null;
try {
// R/W operation with files
} finally {
// close sourceDir, targetDir, br, bw
}
解决方案2
FileObject sourceDir = null;
FileObject targetDir = null;
BufferedWriter bw = null;
BufferedReader br = null;
try {
// R/W operation with files
} catch (IOException e) {
throw e;
} finally {
// close sourceDir, targetDir, br, bw
}
我不喜欢第二个解决方案中的throw e
,但try-finally
对我来说似乎有点不寻常,所以我不确定应该使用哪一个。或者有更好的方法可以做到吗?
答案 0 :(得分:2)
如果要记录异常和/或将其包装在运行时异常中并抛出它,则第二个解决方案可能很有用。
答案 1 :(得分:1)
选项1完全正确。 try ... finally
通常用于此。
您甚至可以将return
放入try块中,Java将处理您的finally
并返回。