Когда я должен использовать finally-block в Java try-catch-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

Ответы

Ответ 1

Используйте блок finally, если у вас есть код, который должен выполняться независимо от того, выбрано ли исключение.

Хорошим примером является очистка скудных ресурсов, таких как соединения с базой данных.

Ответ 2

Очевидным случаем является повторное повышение или сброс другого исключения в вашем блоке catch.

Ответ 3

Это полезно, если вам нужно выполнить некоторую очистку, например. закрыть соединение с базой данных. Поскольку "finally" выполняется всегда, вам не нужно делать подверженную ошибкам копию-вставку того же кода в конце "try", а также в одном или нескольких "catch" -блоках.

Ответ 4

Вы должны почти всегда использовать фрагмент кода с окончательным блоком, когда у вас есть ресурсы, которые необходимо очистить как в успешных сценариях, так и при ошибках. Типичным примером является объект соединения jdbc, который всегда должен быть закрыт (очистить) в блоке finally.

Ответ 5

Представьте, что в блоке catch есть оператор return: блок C не будет выполняться в фрагменте B, но в фрагменте A он вернется, прежде чем вернуться.