Sobes.tech
Назад к вопросам
Junior — Middle
62

Какова поведение программы, если в блоке finally возникнет исключение?

Компании, где спрашивали
IT OneIT One

Ответ от нейросети

sobes.tech AI

Если в блоке finally в Java возникает исключение, то это исключение "перекрывает" (заменяет) любое исключение, которое могло быть выброшено в блоках try или catch.

То есть:

  • Если в try или catch было выброшено исключение, но в finally тоже возникает исключение, то именно исключение из finally будет передано дальше.
  • Предыдущее исключение из try или catch теряется (оно не будет проброшено).

Пример:

try {
    throw new Exception("Исключение из try");
} catch (Exception e) {
    System.out.println("Обработка исключения");
} finally {
    throw new RuntimeException("Исключение из finally");
}

В этом случае программа выбросит RuntimeException из finally, а исключение из try будет потеряно.

Поэтому рекомендуется избегать выбрасывания исключений из finally или аккуратно их обрабатывать.