REG:为了避免堆栈跟踪,可以使用事件侦听器
侦听器类
<?php
namespace UserBundle\Listener;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Twig\Template;
/**
* Created by PhpStorm.
* User: robert
* Date: 20/8/17
* Time: 2:26 PM
*/
class ExceptionListener
{
/**
*
* @var ContainerInterface
*/
private $container;
function __construct($container) {
$this->container = $container;
}
public function onKernelException(GetResponseForExceptionEvent $event)
{
// We get the exception object from the received event
$exception = $event->getException();
$response = new Response($this->container->get('templating')->renderResponse('UserBundle:Exception:error403.html.twig',
array('exception'=>$exception->getMessage())));
$event->setResponse($response);
}
}
services:
core.exceptlistener:
class: UserBundle\Listener\ExceptionListener
arguments: ['@service_container', '@templating']
tags:
{ name: kernel.event_listener, event: kernel.exception, method: onKernelException }