Mar*_*ius 3 java exception-handling try-finally
我有一些代码创建了一个JarFile和一个URLClassLoader,我想在最后关闭它们.当然,我决定使用该finally块来处理清理:
JarFile jar = ...;
URLClassLoader loader = ...;
try {
// work ...
} finally {
jar.close();
loader.close();
}
Run Code Online (Sandbox Code Playgroud)
但是,两个close()调用都可以抛出异常,因此如果jar.close()抛出异常,则loader.close()无法访问.我想解决这个问题的一种方法是jar.close()使用try-catch块进行处理:
JarFile jar = ...;
URLClassLoader loader = ...;
try {
// work ...
} finally {
try {
jar.close();
} catch(IOException e) {
}
loader.close();
}
Run Code Online (Sandbox Code Playgroud)
但这看起来很丑陋而且过分.是否有一种优雅的方法来处理finally块中与清理相关的异常?
在Java 7及更高版本中,尝试使用处理Closeable对象的资源.
这样重新格式化你的代码,
try(JarFile jar = ....; URLClassLoader loader = ....;)
{
// work ...
}
Run Code Online (Sandbox Code Playgroud)
只有实现该Closeable接口的类才能以这种方式工作,这两个类都符合这个标准.
| 归档时间: |
|
| 查看次数: |
258 次 |
| 最近记录: |