繁体   English   中英

改变“哎呀,看起来像是出了问题。”的消息

[英]Change “Whoops, looks like something went wrong.” message

我确定我在这里错过了一些愚蠢的东西。 我正在尝试替换Laravel在出现异常时抛出的非调试错误屏幕。 它似乎忽略了下面的代码(放在start/global.php ):

App::error(function(Exception $exception, $code)
{
    Log::error($exception);
    if(!Config::get('app.debug')) {
        return Response::view('errors.exception', ['message' => $exception->getMessage()], 500);
    }
});

为什么会忽略这一点? 我本来应该在其他地方做些什么吗?

有点清晰:

我正在使用QueryExceptionHY000 )测试它。 但这肯定不会有所作为?

使用Laravel 4.2

没有看到你的系统就很难说,但是我的第一个猜测就是对App:error的另一个调用App:error在你的App:error之后发生的App:error会覆盖你在app/global.php尝试做的事情。

我刚刚写了关于Laravel 最近如何设置它的错误处理的文章 阅读完那篇文章(或者跳过它并潜入)之后,我调试这个的方式就是跳进去

vendor/laravel/framework/src/Illuminate/Exception/Handler.php

并查看callCustomHandlers的定义。 这是通过App:error调用任何处理程序设置的方法

protected function callCustomHandlers($exception, $fromConsole = false)
{
    foreach ($this->handlers as $handler)
    {
        //...
    }
}

您的处理程序将位于$this->handlers数组中。 我将为此类添加一些临时调试代码(该类可能在Laravel的单个组合优化文件中)来确定

  1. 如果你的处理程序失败了handlesException测试

  2. 如果在“获胜”并发送响应之后有另一个处理程序添加到队列中。

从一开始也不会伤害

App::error(function()
{
    exit(__FILE__);
});

然后构建你的错误处理程序,直到它被停止被调用。 那样你就知道Laravel有什么问题了。

app/global.php有一个默认的错误处理程序设置。 您将要删除它以使用您的,或只是修改那个。

查看更多信息... http://laravel.com/docs/errors#handling-errors

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM