Выбор ответа Junior Исключения спрашивают часто обновлено

return в try и finally

Вопрос

Что вернёт метод?

static int f() {
    try {
        return 1;
    } finally {
        return 2;
    }
}

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 2. finally выполняется после return 1, и его собственный return 2 перекрывает результат.

Варианты ответа

  1. 1
  2. 2правильный ответ
  3. Ошибка компиляции: два return
  4. Метод выбросит исключение

Разбор

finally выполняется после return 1, и его собственный return 2 перекрывает результат. Код компилируется (с предупреждением). Именно поэтому return в finally считается антипаттерном: он ещё и глотает исключения из try.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.