Выбор ответа Middle Ошибки обновлено
Typed throws в Swift 6
Вопрос
Что даёт объявление func fetch() throws(NetworkError) -> Data (Swift 6)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: В catch ошибка имеет тип NetworkError, другой бросить нельзя. Typed throws (SE-0413) появились в Swift 6.0.
Варианты ответа
- Компилятор требует обработать каждый кейс
NetworkErrorв отдельномcatch - Ошибки становятся опционалами, и вызывать функцию можно без
try - В
catchошибка имеет типNetworkError, другой бросить нельзяправильный ответ - Это синтаксис моста к Objective-C: ошибка придёт как
NSError
Разбор
Typed throws (SE-0413) появились в Swift 6.0. Функция объявляет конкретный тип ошибки, и в do/catch переменная error уже типа NetworkError, без приведения. Полной обработки каждого кейса компилятор не требует. Обычный throws равнозначен throws(any Error). Рекомендация авторов: typed throws для внутренних модулей и встраиваемых систем, а публичным API чаще хватает нетипизированного.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.