Sobes.tech
Назад к вопросам
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. Компиляционная ошибка не произойдет, но такое поведение может привести к потере информации об ошибках и считается плохой практикой.