Для чего нам нужен код исключения PHP? Любой сценарий использования? - PullRequest
37 голосов
/ 03 мая 2011

Ладно, это очень неприятный вопрос для многих, но я надеюсь, что получу ошеломляющий ответ:)

Когда я генерирую исключение в PHP, я могу добавить код к сообщению.
Я ловлю исключение и обрабатываю его в соответствии с его типом (например, InvalidArgumentException или OutOfBoundException). Я регистрирую сообщение , либо отображаю его, либо делаю что угодно.
Я также могу добавить предыдущее исключение, чтобы проследить путь к источнику ошибки.

НО одна вещь, которую я никогда не использовал или никогда не думал: насколько полезен код ?

Например:

throw new Exception("db Error", $code, $previousException);

Что мне делать с $code?

Ответы [ 4 ]

37 голосов
/ 03 мая 2011

Сообщение предназначено для отображения пользователю, а код - для использования вашей программой.Так, например, в вашем примере «ошибка базы данных» вы могли бы создать набор кодов, таких как

  1. Не удается подключиться
  2. Ошибка при запросе
  3. Пусторезультат
  4. Ошибка закрытия соединения

, а затем используйте соответствующий код.Затем, когда другие части вашего кода увидят, что они исключены, они узнают, что произошло, и, возможно, смогут разумно с этим справиться.

13 голосов
/ 03 мая 2011

Способ интерпретации $code зависит от типа исключения. Например, если у вас есть подкласс Exception, который представляет ошибку базы данных MySQL, тогда $code может быть собственным кодом ошибки MySQL. В случае ошибки ввода-вывода низкого уровня это может быть значение от <errno.h>.

Как правило, $code должен содержать все, что вам нужно для программной обработки исключения. Большинство исключений предназначено для обработки где-то. Если все ваши исключения просто отображаются как ошибки, то $code полезен только в том случае, если вам нужно включить код ошибки из библиотеки, такой как клиентская библиотека MySQL.

3 голосов
/ 12 мая 2015

В объектно-ориентированных языках тип исключения передает тип ошибки.Однако, если, например, у вас есть две вещи, которые могут генерировать один и тот же тип исключения, код ошибки можно использовать для более подробной информации.

Код ошибки - это широко используемая функция в необъектно-ориентированном языке для передачичто это за ошибка.

3 голосов
/ 16 января 2015

Я видел реализации (CakePHP), где $code используется в качестве кода состояния HTTP.

Я реализовал эту концепцию с подмножеством исключений.Таким образом, все исключения, начиная с HttpException, которые выдают, отвечают с ошибками HTTP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...