Встречается на собеседованиях • сегодня

Что вернет метод при делении на 0 в try, если блок catch возвращает ошибку, а finally возвращает "finally"

В Java finally блок выполнится всегда, даже если в try или catch было возвращение значения или исключение. Однако если catch возвращает ошибку (throw), а finally пытается вернуть значение (return), это приведет к ошибке компиляции - нельзя одновременно возвращать значение и бросать исключение.

Пример:

java
String test() {
    try {
        int x = 5 / 0;
    } catch (Exception e) {
        throw new RuntimeException("Error"); // Бросаем исключение
    } finally {
        return "finally"; // Ошибка компиляции!
    }
}

Компилятор выдаст ошибку, так как метод не может одновременно:

  1. Бросать исключение (из catch)
  2. Возвращать значение (из finally)

Правильный вариант - либо возвращать значение из finally, либо бросать исключение, но не оба варианта одновременно.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы