有没有可能使PHP异常成为非致命的


Is it possible to make PHP exceptions non-fatal?

我写了一个类,它的方法经常抛出许多异常——例如,如果给定的用户ID与用户不对应,则抛出一个NoResultException,如果令牌错误,则抛出BadTokenException,如果电子邮件地址已注册,则抛出EmailTakenException,等等。

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

谢谢。

请改用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

只有通过try/catch块捕获异常,并且您刚才说您太懒了,才可以使异常成为非致命的异常?这毫无意义。您可以使用trigger_error,也可以添加try/catch块。

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