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

Как можно не дойти до finally в try/catch

В блок finally можно не попасть в нескольких случаях:

  1. System.exit() - вызов этого метода завершает JVM:
java
try {
    System.exit(0);
} finally {
    System.out.println("Не выполнится");
}
  1. Бесконечный цикл/блокировка - если поток заблокирован или выполняется бесконечно:
java
try {
    while(true) {} // Бесконечный цикл
} finally {
    System.out.println("Не выполнится");
}
  1. Сбой JVM - аварийное завершение (OutOfMemoryError, Segmentation Fault и т.д.)

  2. Принудительное завершение потока - через Thread.stop() (deprecated) или прерывание через native-методы.

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

Важно: finally не выполняется только в исключительных ситуациях, в нормальной работе он гарантированно выполнится после try/catch.

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

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

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

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