Какая разница между
try {
fooBar();
} finally {
barFoo();
}
и
try {
fooBar();
} catch(Throwable throwable) {
barFoo(throwable); // Does something with throwable, logs it, or handles it.
}
Мне нравится вторая версия лучше, потому что она дает мне доступ к Throwable. Есть ли логическое различие или предпочтительное соглашение между двумя вариантами?
Кроме того, есть ли способ получить доступ к исключению из предложения finally?