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

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

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

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

Например:

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

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

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

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

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

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

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

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

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

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

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

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