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

Сопоставление ошибок в catch

Вопрос

Как поймать только ошибку DecodingError.keyNotFound и получить ключ?

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

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

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

Коротко

Правильный ответ: catch DecodingError.keyNotFound(let key, ). catch принимает паттерн, как case в switch, включая связанные значения enum.

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

  1. catch (DecodingError) keyNotFound(let key) { ... }
  2. catch if error == .keyNotFound { ... }
  3. catch DecodingError.keyNotFound(let key, _)правильный ответ
  4. catch DecodingError { print(error.key) }

Разбор

catch принимает паттерн, как case в switch, включая связанные значения enum. Ключ достаётся через let key. Остальные ошибки уйдут в следующий catch или выше. Варианты со скобками и if не синтаксис Swift, а у DecodingError нет свойства key.

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

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