ErrorListener
将记录未捕获的异常,考虑到 WithErrorLevel
属性、状态代码,并将漂亮地打印带有大量信息的错误。
在我的控制器中,我调用可能抛出的操作:
ErrorListener
为我记录异常知道如何使用
ErrorListerner
订阅者记录异常吗?
<?php
namespace App\EventSubscriber;
use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\KernelEvents;
readonly class ExceptionSubscriber implements EventSubscriberInterface
{
public function __construct(
private LoggerInterface $logger
) {
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::EXCEPTION => 'onKernelException',
];
}
public function onKernelException(ExceptionEvent $event): void
{
$throwable = $event->getThrowable();
if ($throwable instanceof \InvalidArgumentException) {
$event->setResponse(...);
}
}
}