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

return в try и finally

Вопрос

Что вернёт функция?

function f(): string {
    try {
        return "try";
    } finally {
        return "finally";
    }
}

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

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

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

Коротко

Правильный ответ: "finally". В PHP finally выполняется после return в try, и если в finally есть свой return, он перекрывает предыдущий.

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

  1. "try"
  2. null
  3. "finally"правильный ответ
  4. Будет ошибка: return в finally запрещён

Разбор

В PHP finally выполняется после return в try, и если в finally есть свой return, он перекрывает предыдущий. Функция вернёт "finally". Так же return в finally молча «съедает» брошенное исключение. Это законно, но почти всегда ошибка, анализаторы предупреждают.

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

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