TL; DR:在代码中的某处触发PHP错误.在PHP 5中,它被触发为一个简单的PHP错误; 在PHP 7中,它被抛出Error,现在它被传递到Symfony的异常处理程序中.
此错误可能一直存在于您的应用程序中,并且由于error_reporting或display_errors设置而被吞下.
错误处理机制在PHP 7中已更改.错误现在作为Error类的实例抛出,并且可以由异常处理程序捕获.有关更多信息,请参阅文档:
PHP 7改变了PHP报告大多数错误的方式.不是通过PHP 5使用的传统错误报告机制报告错误,而是通过抛出错误异常来报告大多数错误.
与正常的例外情况一样,这些
Error异常会在到达第一个匹配的catch块之前冒泡.如果没有匹配的块,则将set_exception_handler()调用安装的任何默认异常处理程序,如果没有默认的异常处理程序,则异常将转换为致命错误,并将像传统错误一样处理.
但是,请注意Error该类不会扩展Exception该类(但它们都实现了Throwable接口).
由于Symfony异常处理程序使用该set_exception_handler方法注册为异常处理程序,因此将Error在代码中抛出所有类型的未捕获实例来调用此处理程序,但无法处理它们,因为它期望Exception按类型提示.
目前,您可以通过实现自己的ExceptionHandler(您可以使用它而不是Symfony)来实现一个handle(Throwable $error)函数来解决这个问题,从而可以捕获PHP错误.
| 归档时间: |
|
| 查看次数: |
2363 次 |
| 最近记录: |