EventListener/ExceptionListener.php
public function onKernelException(GetResponseForExceptionEvent $event)
    {
        $exception = $event->getException();

        if (!($event->getRequest())
            || ($this->matchAll === false && !$this->isApiException($exception))
        ) {
            return;
        }

        $data = [];

        if ($this->isApiException($exception)) {
            $exception = $this->exceptionManager->configure($exception);
        }

        $statusCode = $this->getStatusCode($exception);

        $data['error']['status']  = $statusCode;

        if ($code = $exception->getCode()) {
            $data['error']['code'] = $code;
        }

        $data['error']['message'] = $this->getMessage($exception);

        if ($this->isFlattenErrorException($exception)) {
            $data['error']['errors'] = $exception->getFlattenErrors();
        }

        if ($this->stackTrace) {
            $data['error']['stack_trace'] = $exception->getTrace();

            // Clean stacktrace to avoid circular reference or invalid type
            array_walk_recursive(
                $data['error']['stack_trace'],
                function(&$item) {
                    if (is_object($item)) {
                        $item = get_class($item);
                    } elseif (is_resource($item)) {
                        $item = get_resource_type($item);
                    }
                }
            );
        }

        $response = new JsonResponse($data, $statusCode, $this->getHeaders($exception));
        $event->setResponse($response);
    }
public function onKernelException(GetResponseForExceptionEvent $event)
    {
        $exception = $event->getException();

        if (!($event->getRequest())
            || ($this->matchAll === false && !$this->isApiException($exception))
        ) {
            return;
        }

        $data = [];

        if ($this->isApiException($exception)) {
            $exception = $this->exceptionManager->configure($exception);
        }

        $statusCode = $this->getStatusCode($exception);

        $data['error']['status']  = $statusCode;

        if ($code = $exception->getCode()) {
            $data['error']['code'] = $code;
        }

        $data['error']['message'] = $this->getMessage($exception);

        if ($this->isFlattenErrorException($exception)) {
            $data['error']['errors'] = $exception->getFlattenErrors();
        }

        if ($this->stackTrace) {
            $data['error']['stack_trace'] = $exception->getTrace();

            // Clean stacktrace to avoid circular reference or invalid type
            array_walk_recursive(
                $data['error']['stack_trace'],
                function(&$item) {
                    if (is_object($item)) {
                        $item = get_class($item);
                    } elseif (is_resource($item)) {
                        $item = get_resource_type($item);
                    }
                }
            );
        }

        $response = new JsonResponse($data, $statusCode, $this->getHeaders($exception));
        $event->setResponse($response);
    }
public function onKernelException ( GetResponseForExceptionEvent $ event ) { $ exception = $ event -> getException ( ) ; if ( ! ( $ event -> getRequest ( ) ) || ( $ this -> matchAll === false && ! $ this -> isApiException ( $ exception ) ) ) { return ; } $ data = [ ] ; if ( $ this -> isApiException ( $ exception ) ) { $ exception = $ this -> exceptionManager -> configure ( $ exception ) ; } $ statusCode = $ this -> getStatusCode ( $ exception ) ; $ data [ 'error' ] [ 'status' ] = $ statusCode ; if ( $ code = $ exception -> getCode ( ) ) { $ data [ 'error' ] [ 'code' ] = $ code ; } $ data [ 'error' ] [ 'message' ] = $ this -> getMessage ( $ exception ) ; if ( $ this -> isFlattenErrorException ( $ exception ) ) { $ data [ 'error' ] [ 'errors' ] = $ exception -> getFlattenErrors ( ) ; } if ( $ this -> stackTrace ) { $ data [ 'error' ] [ 'stack_trace' ] = $ exception -> getTrace ( ) ; // Clean stacktrace to avoid circular reference or invalid type array_walk_recursive ( $ data [ 'error' ] [ 'stack_trace' ] , function ( & $ item ) { if ( is_object ( $ item ) ) { $ item = get_class ( $ item ) ; } elseif ( is_resource ( $ item ) ) { $ item = get_resource_type ( $ item ) ; } } ) ; } $ response = new JsonResponse ( $ data , $ statusCode , $ this -> getHeaders ( $ exception ) ) ; $ event -> setResponse ( $ response ) ; }
Format response exception

@param GetResponseForExceptionEvent $event
Format response exception