【问题标题】:How to Simulate 500 Error in Symfony 2如何在 Symfony 2 中模拟 500 错误
【发布时间】:2013-01-11 18:42:06
【问题描述】:

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

我一直在阅读this post,其中 Raise 建议抛出异常

throw new sfException('Testing the 500 error');

在 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?

【问题讨论】:

    标签: symfony


    【解决方案1】:

    你可以这样做。

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

    别忘了添加

    use Symfony\Component\HttpFoundation\Response;
    

    在文件的顶部。

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

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

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

    【讨论】:

    • 我已将$response 代码放置在控制器内部以及控制器内部的一个函数中。为了测试,我去了http://local.store.com/app_dev.php/http://local.store.com/,但我没有看到 500 错误页面。
    • 当我将$response 代码放在控制器内部的一个函数中,并通过http://local.store.com/app_dev.php/bad-url 进行测试时,我得到的是 Google Chrome 500 页面而不是 Symfony 500 错误页面。
    【解决方案2】:

    你可以这样做:

    throw new Symfony\Component\HttpKernel\Exception\HttpException(500, "Some description");
    

    【讨论】:

    • 赞成,因为使用HttpException 使开发人员打算直接引起 500 响应的代码更加明显。
    【解决方案3】:

    最简单的方法是:

    return new Response('', 500);

    不要忘记包含Symfony\Component\HttpFoundation\Response

    【讨论】:

      【解决方案4】:

      一个好的方法可以是:

      use Symfony\Component\HttpKernel\Exception\HttpException;
      
      throw new HttpException(\Symfony\Component\HttpFoundation\Response::HTTP_INTERNAL_SERVER_ERROR, 'Testing the 500 error');
      

      【讨论】:

        【解决方案5】:

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

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

        除以零将生成Warning,同时抛出Exception,好吧,它只会抛出它。 :-)

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-09-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多