我有一些创建 aJarFile
和 a 的代码URLClassLoader
,我想在最后关闭它们。自然地,我决定使用finally
块来处理清理:
JarFile jar = ...;
URLClassLoader loader = ...;
try {
// work ...
} finally {
jar.close();
loader.close();
}
但是,两个close()
调用都可能引发异常,因此如果jar.close()
会引发异常,则loader.close()
不会到达。我考虑解决此问题的一种方法是jar.close()
使用 try-catch 块:
JarFile jar = ...;
URLClassLoader loader = ...;
try {
// work ...
} finally {
try {
jar.close();
} catch(IOException e) {
}
loader.close();
}
但这似乎丑陋和过分。是否有一种优雅的方式来处理finally
块中与清理相关的异常?