如何在Symfony 2中模拟500错误

时间:2013-01-11 18:42:07

标签: symfony

我想知道如何在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?

6 个答案:

答案 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,好吧,它只会抛出它。 : - )