Symfony3自定义异常返回JSON响应


Symfony3 custom Exception returning a JSON response

我想在Symfony3上创建一个自定义异常,返回一个JSON响应,以便能够在JavaScript中处理它。

谁知道这是可能的,怎么做?

创建一个新的异常处理程序类,如下所示:

namespace AppBundle'Subscriber;
use Symfony'Component'EventDispatcher'EventSubscriberInterface;
use Symfony'Component'HttpFoundation'JsonResponse;
use Symfony'Component'HttpKernel'Event'GetResponseForExceptionEvent;
class ExceptionSubscriber implements EventSubscriberInterface
{
    /* ... */
    public static function getSubscribedEvents()
    {
        return [ KernelEvents::EXCEPTION => 'onKernelException' ];
    }
    public function onKernelException(GetResponseForExceptionEvent $event)
    {
        $customResponse = new JsonResponse(['error' => 'My custom error message']);
        $event->setResponse($customResponse);
    }
}

别忘了在app/config/services.yml:

中注册新的服务
app.exception_subscriber:
    class: AppBundle'Subscriber'ExceptionSubscriber
    tags:
      - { name: kernel.event_subscriber }