如果alsa-mixer
发生在GetResponseForExceptionEvent
之前,那么我们可以设置kernel.response
对象并将其发送给用户。但是,如果它发生在Response
之后或之中(发送了实际的响应之后),则没有官方的方法/ API来检查响应是否已经发送。
kernel.terminate
答案 0 :(得分:1)
您可以在ExceptionListener
中注入RequestStack
。 RequestStack文档说
在请求处理之外,
$requestStack->getCurrentRequest()
返回null。
因此,在您的听众中,您可以检查$currentRequest
<?php
namespace App\EventListener;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
class ExceptionListener
{
protected $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
public function onKernelException(GetResponseForExceptionEvent $event)
{
if (null === $this->requestStack->getCurrentRequest()) {
// exception is happen outside the handling of a request
// so before request is handled and after response has been sent
}
}
}