对于Stripe可能根据某些情况抛出的所有异常,我有一个Stripe异常包装。我试图为抛出的异常注册一个事件监听器,但似乎并没有解雇这个监听器。Symfony3注册异常监听器
不是在json响应中返回事件,而是抛出500并渲染堆栈跟踪。有什么我失踪了吗?
// AppBundle/Exceptions/StripePaymentException.php
namespace AppBundle\Exceptions;
use Exception;
class StripePaymentException extends Exception {
public $response;
public $message;
public function __construct($message, $response, $code = 0, Exception $previous = null)
{
parent::__construct($message, $code);
$this->message = $message;
$this->response = $response;
}
public function getResponse()
{
return $this->$response;
}
}
// AppBundle/EventListener/StripePaymentExceptionListener.php
namespace AppBundle\EventListener;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
class StripePaymentExceptionListener
{
public function onKernelException(GetResponseForExceptionEvent $event)
{
$exception = $event->getException();
$data = $exception->getResponse();
$response = new JsonResponse($data);
$event->setResponse($response);
}
}
// services.yml
app.stripe_payment_exception_listener:
class: AppBundle\EventListener\StripePaymentExceptionListener
tags:
- { name: kernel.event_listener, event: kernel.exception, priority: 200 }
究竟哪个错误你检索? –
@AlessandroMinoccheri因此,异常被抛出,但它没有按照我期待的方式(通过侦听器)进行格式化。它抛出一个500,并呈现一个新的页面,而不是仅仅返回一个响应。 – mashedpotatoes