Назад к вопросам
Junior — Middle
75
Произойдет ли компиляционная ошибка при делении на ноль в блоке try, если catch возвращает исключение, а finally возвращает строку "finally"?
Компании, где спрашивали
Драйв Клик
Ответ от нейросети
sobes.tech AI
В Java при делении на ноль для целочисленных типов возникает исключение ArithmeticException. Если это происходит в блоке try, и в блоке catch выбрасывается другое исключение, а в блоке finally есть оператор return, то именно значение из finally будет возвращено, а исключения будут подавлены.
Пример:
public String test() {
try {
int a = 1 / 0; // ArithmeticException
} catch (Exception e) {
throw new RuntimeException("Ошибка в catch");
} finally {
return "finally";
}
}
В этом коде метод вернет строку "finally" и не выбросит исключение, так как return в finally перекрывает исключения из try и catch. Компиляционная ошибка не произойдет, но такое поведение может привести к потере информации об ошибках и считается плохой практикой.