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

Result или throws

Вопрос

Когда Result<Success, Failure> удобнее, чем throws?

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

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

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

Коротко

Правильный ответ: Когда результат надо сохранить или передать как значение, например в callback. Result делает успех или ошибку обычным значением: его можно положить в свойство, передать в completion-обработчик, сравнить в тесте.

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

  1. Всегда: после появления Result конструкция throws считается устаревшей
  2. Когда функция синхронная: для async-кода Result использовать нельзя
  3. Когда ошибок может быть несколько одновременно и их нужно вернуть списком
  4. Когда результат надо сохранить или передать как значение, например в callbackправильный ответ

Разбор

Result делает успех или ошибку обычным значением: его можно положить в свойство, передать в completion-обработчик, сравнить в тесте. Для синхронного и async-кода идиоматичнее throws, а Result(catching:) и get() легко конвертируют одно в другое. throws не устарел. Несколько ошибок одновременно ни один из них не выражает.

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

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