Задать вопрос

Как вернуть код ошибки из метода?

Добрый вечер. Подскажите пожалуйста как лучше возвращать код ошибки из метода.
К примеру есть функция:
/**
     * @return User|bool
     */
    public function register()
    {
      //  ...
        if (empty($userData)) {
            $errorCode = $this::USER_DATA_EMPTY_ERROR;
        } else if ($this->authenticate() === true) {
            $errorCode = $this::USER_REGISTERED_ERROR;
        } else {
            return $registeredUser;
        }
    }

Варианты:
  1. Возвращать true или код ошибки, но в будущем может вызвать серьёзные проблемы.Допустим если мы забыли написать строгое сравнение ===
  2. Выкидывать исключение. Это скорее относится к фатальным ошибкам, поэтому не подходит
  3. Запись кода ошибки в свойство объекта, в котором находится метод. Хороший вариант, но не хочется засорять класс

Как делаете вы?
  • Вопрос задан
  • 362 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Если исключение ловить, то оно не относится к фатальным ошибкам.
Ответ написан
abler98
@abler98
Software Engineer
Третий вариант самый оптимальный (для меня), таким образом можно получить все ошибки сразу или по отдельности. А ещё лучше записывать не коды ошибок, а сами ошибки.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
gbg
@gbg Куратор тега Программирование
Любые ответы на любые вопросы
К фатальным ошибкам скорее относится считать, что исключения нужны только для отработки каких-то ужасов. На самом деле это наиболее корректный языковой механизм, верное применение которого гарантирует правильную раскрутку и очистку стека, а также освобождение ресурсов, особенно при использовании сложной, динамической логики захвата ресурсов.
Ответ написан
BuriK666
@BuriK666
Компьютерный псих
Возвращать true или код ошибки, но в будущем может вызвать серьёзные проблемы.Допустим если мы забыли написать строгое сравнение ===
Если кто-то что-то забыл или не знает, это его проблемы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы