Back to questions
IT One
Junior — Middle
61
Какова поведение программы, если в блоке finally возникнет исключение?
Companies where asked
Answer from AI
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 или аккуратно их обрабатывать.