Что происходит, когда в потоке выбрасывается исключение?

Нисходящее движение (unwinding) стека вызовов: JVM ищет подходящий обработчик исключения (блок catch) в текущем методе, затем в вызывающем методе и так далее вверх по стеку.

Короткий ответ

Что ответить на собеседовании

Нисходящее движение (unwinding) стека вызовов: JVM ищет подходящий обработчик исключения (блок catch) в текущем методе, затем в вызывающем методе и так далее вверх по стеку.

Подробный разбор

Ответ с пояснениями

Нисходящее движение (unwinding) стека вызовов: JVM ищет подходящий обработчик исключения (блок catch) в текущем методе, затем в вызывающем методе и так далее вверх по стеку.

Если обработчик найден:

  • Выполняется код из блока catch.
  • Может быть выполнен блок finally.
  • Выполнение программы продолжается после блока try-catch-finally.

Если обработчик не найден:

  • Вызывается метод uncaughtException соответствующего ThreadGroup, если он переопределен.
  • Используется обработчик по умолчанию (Thread.getDefaultUncaughtExceptionHandler), если установлен.
  • Если ни один из вышеперечисленных обработчиков не установлен, стектрейс исключения выводится в стандартный вывод ошибок, и поток завершается.

В других потоках выполнение программы продолжается независимо от завершившегося потока.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее