24

我想知道如何在 Symfony 2 中模拟 500 错误。

我一直在阅读这篇文章,其中Raise建议抛出异常

throw new 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?

4

6 回答 6

34

你可以这样做。

//in your controller
$response = new Response();
$response->setStatusCode(500);
return $response;

不要忘记添加

use Symfony\Component\HttpFoundation\Response;

在文件的顶部。

编辑:要强制 Symfony 500 错误,您的提议很好:

throw new \Exception('Something went wrong!');

把它放在一个控制器函数中。

于 2013-01-11T18:50:41.463 回答
33

你可以做:

throw new Symfony\Component\HttpKernel\Exception\HttpException(500, "Some description");
于 2013-01-14T21:25:47.770 回答
3

最简单的方法是:

return new Response('', 500);

不要忘记包括Symfony\Component\HttpFoundation\Response.

于 2015-10-22T19:52:32.483 回答
3

一个好的方法可以是:

use Symfony\Component\HttpKernel\Exception\HttpException;

throw new HttpException(\Symfony\Component\HttpFoundation\Response::HTTP_INTERNAL_SERVER_ERROR, 'Testing the 500 error');
于 2017-08-18T10:08:20.663 回答
0

你必须使用Symfony\Component\HttpKernel\Exception\HttpException

另一种方法应该是做类似的事情1/0;,但我还没有测试过。

于 2013-01-12T03:26:52.913 回答
0

如果您想FatalErrorException在 Symfony2 中触发 a 以查看您的应用程序是否正确处理它,您可以在控制器中创建如下操作:

public function fatalErrorExceptionAction()
{
    $unknown->getVoid();
}

除以零会产生一段Warning时间抛出Exception,好吧,它只会抛出它。:-)

于 2013-05-02T13:35:55.797 回答