對於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