我想知道如何在Symfony 2中模拟500错误。
我一直在阅读this post 提升建议抛出异常
抛出新的sfException('测试500错误');
在Symfony 1.4中。
我一直把这段代码放在我的
中\store\vendor\symfony\symfony\src\Symfony\Bundle\TwigBundle\Controller\ExceptionController.php
但我得到致命错误
在第49行的/home/notroot/www/store/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Controller/ExceptionController.php中找不到类'Symfony \ Bundle \ TwigBundle \ Controller \ sfException'
第49行是指我添加的异常代码。
我的问题是,如果在Symfony 2中强制出现500错误仍然可以抛出异常,如果是这样,我在哪里放置此异常?
如果这不再可行,我怎么能测试错误500?
答案 0 :(得分:33)
你可以这样做。
//in your controller
$response = new Response();
$response->setStatusCode(500);
return $response;
别忘了添加
use Symfony\Component\HttpFoundation\Response;
位于文件顶部。
编辑:要强制Symfony 500错误,您的提议很好:
throw new \Exception('Something went wrong!');
将其置于控制器功能中。
答案 1 :(得分:28)
你可以这样做:
throw new Symfony\Component\HttpKernel\Exception\HttpException(500, "Some description");
答案 2 :(得分:3)
最简单的方法是:
return new Response('', 500);
请勿忘记加入Symfony\Component\HttpFoundation\Response
。
答案 3 :(得分:1)
一个好方法可以是:
use Symfony\Component\HttpKernel\Exception\HttpException;
throw new HttpException(\Symfony\Component\HttpFoundation\Response::HTTP_INTERNAL_SERVER_ERROR, 'Testing the 500 error');
答案 4 :(得分:0)
您必须使用Symfony\Component\HttpKernel\Exception\HttpException。
另一种方法应该是做1/0;
之类的事情,但我还没有测试过它。
答案 5 :(得分:0)
如果您想在Symfony2中触发FatalErrorException
以查看您的应用是否正确处理它,您可以在控制器中创建这样的操作:
public function fatalErrorExceptionAction()
{
$unknown->getVoid();
}
除以零会产生Warning
同时抛出Exception
,好吧,它只会抛出它。 : - )