【发布时间】:2015-06-06 15:54:34
【问题描述】:
我有一些代码可以创建JarFile 和URLClassLoader,我想在最后关闭这两个代码。自然地,我决定使用finally 块来处理清理工作:
JarFile jar = ...;
URLClassLoader loader = ...;
try {
// work ...
} finally {
jar.close();
loader.close();
}
但是,两个close() 调用都可能引发异常,因此如果jar.close() 会引发异常,则将无法到达loader.close()。我想解决这个问题的一种方法是用 try-catch 块包围jar.close():
JarFile jar = ...;
URLClassLoader loader = ...;
try {
// work ...
} finally {
try {
jar.close();
} catch(IOException e) {
}
loader.close();
}
但这看起来既丑陋又过分。有没有一种优雅的方式来处理finally 块中与清理相关的异常?
【问题讨论】:
-
不应该倒序关闭项目吗?
标签: java exception-handling try-finally