在Laravel 5.2中实现异常处理

时间:2016-06-29 05:35:36

标签: php laravel laravel-5.2

我正在尝试在我的应用程序中实现异常处理。为此,Laravel框架有自己的机制来使用report和render方法处理异常。但是为了实现异常,我需要跟踪引发异常的源,例如:特定的页面,路由等。为此,我需要传递url报告和渲染方法,但无法这样做。为了在下面的报告和渲染功能中实现这一点,需要做些什么。

public function report(Exception $e)
{
    parent::report($e);
}


public function render($request, Exception $e)
{
    /*  Token mismatch Exception handler  start */
    if ($e instanceof \Illuminate\Session\TokenMismatchException) {
        return response()->view('errors.sessionExpire', [], 500);
      }
    /* Token mismatch Exception handler  start */
    return parent::render($request, $e);
}

2 个答案:

答案 0 :(得分:2)

从您自己的示例中可以看出,您在参数列表中有一个Request实例。并且Request包含所有特定于请求的详细信息,如当前路由,URL等。

$request->url(); // Current request URL
$request->fullUrl(); // With query parameters
$request->route(); // Get the route closure for this request path

您还可以创建自己的异常类,以接受任意数量的参数!

而且已经提到过的不太舒服的方法 - 你可以通过异常追踪。

答案 1 :(得分:1)

您需要使用Exception::getTrace

var_dump($e->getTrace()); 

以上行将为您提供有关例外的所有详细信息。

public function report(Exception $e){
    echo '<pre>';  // add this line 
    print_r($e->getTrace()); // add this line 
    parent::report($e);
}