是否有可能使PHP异常成为非致命的?

时间:2013-11-22 22:03:46

标签: php exception xdebug

我编写了一个类,其方法经常抛出一些异常 - 例如,如果给定的用户ID与用户不对应,则为NoResultException;如果令牌错误,则为BadTokenExceptionEmailTakenException如果电子邮件地址已经注册,等等。

我正在尝试使用它来编写测试程序。我感到很懒,我不想写try/catch块。我现在可能会这样,但我仍然要问:是否有可能改变PHP的行为并使其成为异常不会产生致命错误?换句话说,我可以让我的脚本捕获异常并使用默认的异常处理程序输出它们(因为我使用XDebug并且回溯很好),但允许脚本完成执行?然后,我可以看到错误的消息(例如“已经采用电子邮件地址”),而不会停止打印页面的其余部分。

感谢。

3 个答案:

答案 0 :(得分:2)

使用trigger_error代替。它会引发非致命错误

trigger_error("Custom Error", E_USER_ERROR);

通过set_error_handler()

显示

http://us1.php.net/trigger_error

http://us1.php.net/set_error_handler

答案 1 :(得分:0)

如果通过try / catch块捕获它们,你只能使异常非致命,并且你刚才说你太懒了吗?这毫无意义。您可以使用trigger_error或添加try / catch块。

答案 2 :(得分:0)

通过创建set_exception_handler函数来处理它们,可以使未捕获的异常成为非致命异常。大多数时候我只是显示HTTP 500系统错误页面。如果有一种方法可以恢复(我不确定为什么你不会在try / catch中执行它),你可以通过查看Exception类和异常中的错误代码来做到这一点。