从异常处理程序中触发错误

时间:2009-09-16 17:11:26

标签: php exception error-handling

鉴于我已经有一个自定义PHP错误处理程序,将异常处理程序定义为这样的“转发器”是否有意义:

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

这个想法是利用已经存在的错误处理程序来处理异常,以避免重复相同的代码。从异常处理程序中触发错误会导致一些问题吗?

2 个答案:

答案 0 :(得分:1)

完全没问题。我有相同的设置,我的错误处理程序通过电子邮件向我发送异常和错误。

这是我的异常处理程序,我输入错误,我有一个未捕获的异常。这样我知道它是由异常而不是错误引起的。它也会因为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。您可能想删除它。

答案 1 :(得分:1)

我之前看到PHP代码中混合了错误和异常。虽然从技术上讲它不应该导致任何问题,但它可能会给开发人员维护代码带来困惑。如果您有时间,请考虑重构所有trigger_error代码以使用异常。当然,你会遇到PHP本身正在创建的任何trigger_error东西,但希望你可以避免大多数情况。