Laravel中的异常不渲染视图

Gra*_*edy 1 laravel

问题摘要

我无法让Laravel使用Response :: error('500')渲染500默认错误页面(views/error/500.php).

重现代码(本例简化)

创建一个虚拟控制器并添加以下公共方法:

public function action_index()
{
    try
    {
        throw new Exception;    
    }
    catch(Exception $e)
    {
        Response::error('500');
    }
}
Run Code Online (Sandbox Code Playgroud)

当您运行此路线时,请注意您将收到一个空白页面,标题状态为200,而不是500.

预期结果

我希望渲染views/error/500.php中的默认500错误页面,并停止执行脚本的其余部分(假设更长的脚本).

实际结果

具有标题状态200的空白白页被发送到浏览器.

我的环境

  • Laravel 3.2.12
  • 共享主机上的PHP 5.3.13
  • Windows 7的
  • Chrome 23(各种其他浏览器的结果相同)

更多信息

还有什么我可以提供的,使这个问题更容易理解或排除故障.Laravel论坛(http://forums.laravel.io/viewtopic.php?id=2191)上出现了一个类似的(相同的)问题,并且它被证明是一段时间后修复的.

在application/routes.php中,我有500个错误处理程序的以下代码:

Event::listen('500', function()
{
    return Response::error('500');
});
Run Code Online (Sandbox Code Playgroud)

您可以在https://github.com/laravel/laravel/blob/master/laravel/response.php上的GitHub上看到Response对象的源代码.

Lau*_*nce 6

你错过了"回归".你必须总是"回归".

public function action_index()
{
    try
    {
        throw new Exception;    
    }
    catch(Exception $e)
    {
        return Response::error('500');
    }
}
Run Code Online (Sandbox Code Playgroud)