Выбор ответа Middle Ошибки обновлено

Typed throws в Swift 6

Вопрос

Что даёт объявление func fetch() throws(NetworkError) -> Data (Swift 6)?

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

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

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

Коротко

Правильный ответ: В catch ошибка имеет тип NetworkError, другой бросить нельзя. Typed throws (SE-0413) появились в Swift 6.0.

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

  1. Компилятор требует обработать каждый кейс NetworkError в отдельном catch
  2. Ошибки становятся опционалами, и вызывать функцию можно без try
  3. В catch ошибка имеет тип NetworkError, другой бросить нельзяправильный ответ
  4. Это синтаксис моста к Objective-C: ошибка придёт как NSError

Разбор

Typed throws (SE-0413) появились в Swift 6.0. Функция объявляет конкретный тип ошибки, и в do/catch переменная error уже типа NetworkError, без приведения. Полной обработки каждого кейса компилятор не требует. Обычный throws равнозначен throws(any Error). Рекомендация авторов: typed throws для внутренних модулей и встраиваемых систем, а публичным API чаще хватает нетипизированного.

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

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