Ответ 1
Используйте блок finally, если у вас есть код, который должен выполняться независимо от того, выбрано ли исключение.
Хорошим примером является очистка скудных ресурсов, таких как соединения с базой данных.
Когда я должен использовать фрагмент кода A вместо фрагмента B (например, какие преимущества используют фрагмент A)?:
Фрагмент A:
try {
// codeblock A
}
catch (Exception ex) {
// codeblock B
}
finally {
//codeblock C
}
Фрагмент B:
try {
// codeblock A
}
catch (Exception ex) {
// codeblock B
}
//codeblock C
Используйте блок finally, если у вас есть код, который должен выполняться независимо от того, выбрано ли исключение.
Хорошим примером является очистка скудных ресурсов, таких как соединения с базой данных.
Очевидным случаем является повторное повышение или сброс другого исключения в вашем блоке catch
.
Это полезно, если вам нужно выполнить некоторую очистку, например. закрыть соединение с базой данных. Поскольку "finally" выполняется всегда, вам не нужно делать подверженную ошибкам копию-вставку того же кода в конце "try", а также в одном или нескольких "catch" -блоках.
Вы должны почти всегда использовать фрагмент кода с окончательным блоком, когда у вас есть ресурсы, которые необходимо очистить как в успешных сценариях, так и при ошибках. Типичным примером является объект соединения jdbc, который всегда должен быть закрыт (очистить) в блоке finally.
Представьте, что в блоке catch
есть оператор return
: блок C не будет выполняться в фрагменте B, но в фрагменте A он вернется, прежде чем вернуться.