У меня есть код, который создает JarFile
и 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
?