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

Что делает try? в Swift

Вопрос

Что вернёт try? JSONDecoder().decode(User.self, from: data) при ошибке декодирования?

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

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

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

Коротко

Правильный ответ: nil, а сама ошибка будет потеряна. try? превращает результат в опционал: при ошибке nil, при успехе значение.

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

  1. Пустой User со значениями по умолчанию
  2. nil, а сама ошибка будет потерянаправильный ответ
  3. Крэш приложения с текстом ошибки
  4. Ошибку как значение типа Error

Разбор

try? превращает результат в опционал: при ошибке nil, при успехе значение. Причина ошибки при этом теряется, поэтому для отладки декодирования try? вреден: вы не узнаете, какое поле сломалось. Крэш даёт try!. Ошибку как значение возвращает Result(catching:).

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

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