【问题标题】:Show error page in Laravel?在 Laravel 中显示错误页面?
【发布时间】:2017-09-27 02:16:49
【问题描述】:

在我进入这个问题之前,我将简要介绍一下我想要做什么。我希望能够向朋友展示;当我的 Laravel 项目中发生错误时,您可以向用户展示,但不幸的是,我不知道该怎么做,希望你们中的一些人能够帮助我?

你好。今天我要问一个关于 Laravel 的问题。很长一段时间以来,我一直想在我的 laravel 项目中记录每一个错误。现在有些人可能会说这很简单,只需覆盖App\Exceptions\Handler 类中的handle() 方法即可。

虽然这相对容易做到,但它不能处理每一个错误。我注意到它不处理查询异常。

我要问的是如何处理每个异常。我主要想做的是在数据库表中记录错误,并禁用对最终用户的漂亮视图。然后,如果我是收到错误的团队成员或团队中的其他成员,他们可以轻松地签入数据库,而无需向最终用户显示任何关键细节。

我遵循了本教程,但它是相同的,它不会记录每一个异常。 http://blog.sarav.co/registering-custom-exception-handler-laravel-5/

【问题讨论】:

    标签: php mysql laravel exception frameworks


    【解决方案1】:

    您可以在App\Exceptions\Handler::render方法中简单地添加一些代码,例如:

    public function render($request, Exception $exception)
    {
        if($exception instanceof \Illuminate\Database\QueryException) {
            // Do something with the $exception
            // dd($exception); // analyze it
            // return a response/redirect
        }
    
        return parent::render($request, $exception);
    }
    

    在这个$exception 实例中,您可以使用以下方法找到许多有用的信息(省略魔术方法,它是get_class_methods 的转储):

    array:12 [▼
      0 => "__construct"
      1 => "getSql"
      2 => "getBindings"
      3 => "__wakeup"
      4 => "getMessage"
      5 => "getCode"
      6 => "getFile"
      7 => "getLine"
      8 => "getTrace"
      9 => "getPrevious"
      10 => "getTraceAsString"
      11 => "__toString"
    ]
    

    此外,$exception->errorInfo 属性也会为您提供一些信息,例如(一个特定的 errorInfo):

    errorInfo: array:3 [▼
        0 => "42S22"
        1 => 1054
        2 => "Unknown column 'ids' in 'field list'"
    ]
    

    注意:仅供参考,errorexception 是两个不同的东西,所以 set_error_handlerset_exception_handler 都是出于不同的原因,错误处理程序不会捕获异常。

    【讨论】:

      【解决方案2】:

      使用set_error_handler 设置自定义异常。或者你可以使用log4php 我相信他们有一个用于 laravel 的包。

      【讨论】:

      • 这仍然没有捕获 QueryException 和其他异常,我将它放在我的 index.php 的顶部是否正确?我还没有研究 log4php,但我现在会,谢谢。
      • 没问题,log4php 应该可以解决问题,但是,如果这是您的错误来源,它不会保存到数据库中。
      • 仅供参考,set_error_handlerset_exception_handler 是两个不同的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 2018-11-22
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多