Я изо всех сил пытаюсь понять, как я должен разрабатывать части обработки ошибок моего кода. Недавно я задал аналогичный вопрос о том, как мне следует возвращать коды ошибок сервера пользователю, например. 404 ошибок. Я узнал, что я должен обработать ошибку из текущей части приложения; кажутся достаточно простыми.
Однако, что мне делать, если я не могу обработать ошибку из текущей ссылки в цепочке? Например, у меня может быть класс, который используется для управления аутентификацией. Одним из методов может быть createUser($username, $password)
. Изменить: Этот метод вернет идентификатор пользователя или объект пользователя. Внутри этой функции мне нужно определить, существует ли имя пользователя. Если это так, как мне предупредить код вызова об этом? Возвращение null вместо объекта пользователя является одним из способов. Но как мне узнать, что вызвало ошибку?
Как я должен обрабатывать ошибки таким образом, чтобы код вызова мог легко узнать, что вызвало ошибку? Существует ли шаблон проектирования, обычно используемый для такого рода ситуаций?
Изменить: Я забыл упомянуть: я использую PHP.
Решено:. Хотя многие утверждают, что исключения не должны использоваться в этой ситуации, я пришел к выводу, что это лучшее решение.
Во-первых, нет простой, элегантной альтернативы исключениям. (Я считаю, что это невозможно без встроенной в язык системы... Исключения уже встроены.)
Во-вторых, в ответ на "исключения следует использовать только для исключительных ситуаций, и это не один" аргумент: "Когда я вызываю getFoo(), Я действительно ожидаю получить Foo. Если я не получу его, это по определению исключительное событие" . (через pkainulainen)