Ошибка запуска из обработчика исключений - PullRequest
2 голосов
/ 16 сентября 2009

Учитывая, что у меня уже есть собственный обработчик ошибок PHP, имеет ли смысл определять обработчик исключений как «пересылку», например:

function exception_handler(Exception $e) {
    trigger_error($e->getMessage(), E_USER_ERROR);
}
set_exception_handler('exception_handler');

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

Ответы [ 2 ]

1 голос
/ 16 сентября 2009

Я видел ошибки и исключения, смешанные в коде PHP раньше. Хотя технически это не должно вызывать каких-либо проблем, скорее всего, это создаст путаницу для разработчиков, поддерживающих код. Если у вас есть время, рассмотрите возможность рефакторинга всего вашего кода trigger_error для использования исключений. Конечно, вы застряли с любыми вещами trigger_error, которые создает сам PHP, но, надеюсь, вы сможете избежать большинства таких ситуаций.

1 голос
/ 16 сентября 2009

Нет проблем с этим вообще. У меня такая же настройка, мой обработчик ошибок отправляет мне по электронной почте сообщения об исключениях и ошибках.

Вот мой обработчик исключений, я вставил в ошибку, что у меня есть необработанное исключение. Таким образом, я знаю, что это было вызвано исключением, а не ошибкой. Это также скажет мне исключение из-за get_class.

function exception_handler(Exception $e) {
  trigger_error('Uncaught ' . get_class($e) . ', code: ' . $e->getCode() . "<br/>\n Message: " . htmlentities($e->getMessage()), E_USER_WARNING);
}

Поскольку мой обработчик ошибок отправляет электронное письмо в формате HTML, в обработчике исключений есть HTML. Вы можете удалить это.

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