Hir*_*ala 22 java exception-handling
我正在使用缓冲的编写器和我的代码,关闭finally块中的编写器.我的代码是这样的.
...........
BufferedWriter theBufferedWriter = null;
try{
theBufferedWriter =.....
....
......
.....
} catch (IOException anException) {
....
} finally {
try {
theBufferedWriter.close();
} catch (IOException anException) {
anException.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
最后我必须在清理代码中使用try catch,因为theBufferedWriter也可能抛出IOException.我不想把这个异常抛给调用的方法.最后使用try catch是一个好习惯吗?如果不是什么替代方案?请建议.
问候,Hiral
Edw*_*ale 14
一个更好的方法是使用Apache commons-io中的IOUtils.closeQuiety.它使您的代码保持整洁,并消除了Java中固有的一些样板.
然后您的代码变为:
BufferedWriter theBufferedWriter = null;
try{
theBufferedWriter = ...
...
} catch (IOException anException) {
...
} finally {
IOUtils.closeQuietly(theBufferedWriter);
}
Run Code Online (Sandbox Code Playgroud)
更好,更富有表现力.
aio*_*obe 12
在Java 7之前,我会说你写的是最好的解决方案.
在Java 7及更高版本中,您可以使用自动资源管理来简化这些操作.有了这个功能,你就可以做到
BufferedWriter theBufferedWriter = null;
try (BufferedWriter theBufferedWriter = ...) {
....
......
.....
} catch (IOException anException) {
....
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15292 次 |
| 最近记录: |