Php 在Symfony 5中处理异常时未定义getException方法

Php 在Symfony 5中处理异常时未定义getException方法,php,symfony5,Php,Symfony5,我创建了一个异常类,如下所示: <?php declare(strict_types=1); namespace App\Exception; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpKernel\Event\ExceptionEvent; use Symfony\Component\HttpKernel\Exception\HttpException; use func

我创建了一个异常类,如下所示:

<?php

declare(strict_types=1);

namespace App\Exception;

use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\Exception\HttpException;
use function strpos;

final class HTTPExceptionListener
{
    public function onKernelException(ExceptionEvent $event): void
    {
        $exception = $event->getException();
        if (! ($exception instanceof HttpException) || strpos($event->getRequest()->getRequestUri(), '/api/') === false) {
            return;
        }

        $response = new JsonResponse(['error' => $exception->getMessage()]);
        $response->setStatusCode($exception->getStatusCode());
        $event->setResponse($response);
    }
}
但我得到了一个错误:


试图调用类“Symfony\Component\HttpKernel\Event\ExceptionEvent”中名为“getException”的未定义方法。在Symfony 4.4中,
getException方法已被弃用,并在Symfony 5中被删除


改用
getThrowable
。请阅读Symfony 4.4中的。

getException
方法已被弃用,并在Symfony 5中被删除


改用
getThrowable
。请阅读。

您是否应该调用
$event->getThrowable()
?那么您是否可以简单地打开
ExceptionEvent
类并检查其方法?@emix我在这一行中遇到错误$exception=$event->getException();1) 打开类2)注意没有
getException
方法,错误消息是不言自明的3)查找其他方法4)注意
getThrowable
方法5)使用
getThrowable
代替6)读取不应该调用的
$event->getThrowable()
?那么,你不能简单地打开
ExceptionEvent
类并检查它的方法吗?@emix我在这一行中遇到错误$exception=$event->getException();1) 打开类2)注意没有
getException
方法,错误消息是自解释的3)查找其他方法4)注意
getThrowable
方法5)使用
getThrowable
代替6)阅读
 App\Exception\HTTPExceptionListener:
        tags:
            - { name: kernel.event_listener, event: kernel.exception }