У меня есть код, который создает JarFile
и URLClassLoader
, оба из которых я хочу закрыть в конце. Естественно, я решил использовать finally
блок, чтобы иметь дело с очисткой:Работа с блоком finally
JarFile jar = ...;
URLClassLoader loader = ...;
try {
// work ...
} finally {
jar.close();
loader.close();
}
Однако оба close()
вызовов могут выбросить исключение, так что если jar.close()
будет сгенерировано исключение, то loader.close()
не будет достигнут. Один из способов я думал о работе вокруг этого окружив jar.close()
с примеркой поймать блок:
JarFile jar = ...;
URLClassLoader loader = ...;
try {
// work ...
} finally {
try {
jar.close();
} catch(IOException e) {
}
loader.close();
}
Но это кажется уродливым и чрезмерными. Есть ли элегантный способ справиться с исключениями, связанными с очисткой, в блоках finally
?
ты не должен закрывать позиции в обратном порядке? –