Подтвердить что ты не робот

Для чего нужен код исключения для PHP? Любой сценарий использования?

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

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

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

Например:

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

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

4b9b3361

Ответ 1

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

  • Невозможно подключиться
  • Ошибка во время запроса
  • Пустой результат
  • Ошибка закрытия соединения

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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