gpt4 book ai didi

php - Symfony ExceptionHandler 抛出关于自身的错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:08:01 25 4
gpt4 key购买 nike

我正在升级应用程序以使用 Symfony 3 和 PHP 7。我不断收到此错误。我不确定它的来源或修复方法。

Symfony\Component\Debug\ExceptionHandler::handle() must be an instance of Exception

最佳答案

TL;DR:您的代码中某处触发了 PHP 错误。在 PHP 5 中,它是作为一个简单的 PHP 错误触发的;在 PHP 7 中,它作为一个 Error 被抛出,现在被传递给 Symfony 的异常处理程序。

此错误可能一直存在于您的应用程序中,并且由于 error_reportingdisplay_errors 设置而被吞没。


错误处理机制在 PHP 7 中发生了变化。错误现在作为 Error 类的实例抛出,并且可以被异常处理程序捕获。参见 the documentation了解更多信息:

PHP 7 changes how most errors are reported by PHP. Instead of reporting errors through the traditional error reporting mechanism used by PHP 5, most errors are now reported by throwing Error exceptions.

As with normal exceptions, these Error exceptions will bubble up until they reach the first matching catch block. If there are no matching blocks, then any default exception handler installed with set_exception_handler() will be called, and if there is no default exception handler, then the exception will be converted to a fatal error and will be handled like a traditional error.

但是,请注意 Error 类没有扩展 Exception 类(尽管它们都实现了 Throwable 接口(interface))。

由于 Symfony 异常处理程序是使用 set_exception_handler 注册为异常处理程序的方法,此处理程序将被调用,并在您的代码中抛出各种未捕获的 Error 实例,但无法处理它们,因为它根据其类型提示期望 Exception

目前,你可以通过实现你自己的 ExceptionHandler(你可以用它代替 Symfony 的)来解决这个问题,它实现了一个 handle(Throwable $error) 函数,让你也可以捕获PHP 错误。

关于php - Symfony ExceptionHandler 抛出关于自身的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34636656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com