Встречается на собеседованиях • сегодня

Что позволяет не вызывать блок finally

Блок finally в Java выполняется всегда, независимо от того, было ли исключение или нет. Однако есть несколько исключительных ситуаций, когда finally может не выполниться:

  1. System.exit() - если вызвать System.exit() внутри try или catch, JVM завершится немедленно.
java
try {
    System.exit(0); // finally не выполнится
} finally {
    System.out.println("Это не напечатается");
}
  1. Сбой JVM - если произойдет фатальная ошибка (например, крах JVM или убийство процесса).

  2. Бесконечный цикл/deadlock - если поток заблокирован или зациклен в try/catch.

  3. Daemon-потоки - если все не-daemon потоки завершились, JVM может завершиться без выполнения finally в daemon-потоках.

В обычных условиях finally гарантированно выполняется после try/catch.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы