Я учусь для своего теста в объектно-ориентированном программировании, и мне было интересно, есть ли какой-нибудь случай, если учесть следующий код:
try {
do something
} catch (someException e) {
} finally {
do something
}
the наконец, блок
не будет выполнен?
Да. Если вы разбиваете виртуальную машину Java или иным образом портите вещи через собственный код, вызываете завершение программы или бесконечно зацикливаетесь / ждете внутри блока try
.
Это единственные три случая, в которых можно избежать выполнения блока finally
.
Если вы вызываете System.exit (0)
в , попробуйте
. Или сделайте что-то, что заставляет JVM завершать работу или зависать (например, в тупике). В противном случае - нет.
Спецификация языка Java гарантирует, что finally будет вызван до завершения оператора try.
Оператор try может не завершиться по обычным причинам, которые были перечислены в ответе Borealid.