如何在Laravel 5中捕获异常/缺失页面?

Mar*_*lln 59 laravel laravel-5

在Laravel 5,App::missing并且App::error是不可用的,那么怎么做你捕捉异常和缺页呢?

我在文档中找不到任何相关信息.

Mar*_*lln 94

在Laravel 5中,您可以通过编辑render方法来捕获异常app/Exceptions/Handler.php.

如果要捕获丢失的页面(也称为NotFoundException),则需要检查异常$e是否是实例Symfony\Component\HttpKernel\Exception\NotFoundHttpException.

public function render($request, Exception $e) {
    if ($e instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException)
        return response(view('error.404'), 404);

    return parent::render($request, $e);
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,我们检查是否$e是一个instanceof,Symfony\Component\HttpKernel\Exception\NotFoundHttpException如果是,我们使用HTTP状态代码404response视图文件error.404作为内容发送.

这可以用于任何例外.因此,如果您的应用发送异常App\Exceptions\MyOwnException,请检查该实例.

public function render($request, Exception $e) {
    if ($e instanceof \App\Exceptions\MyOwnException)
        return ''; // Do something if this exception is thrown here.

    if ($e instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException)
        return response(view('error.404'), 404);

    return parent::render($request, $e);
}
Run Code Online (Sandbox Code Playgroud)

  • 您是怎么知道这个答案的,我在哪里可以找到更多相关信息? (4认同)
  • Aditya Menon,Handler.php和render()函数的基础知识在http://laravel.com/docs/5.0/errors的文档中有解释(但Marwelln的答案是如何使用它的一个很好的例子). (2认同)

小智 15

使用今天的提交(9db97c3),您需要做的就是在/ resources/views/errors /文件夹中添加一个404.blade.php文件,它将自动查找并显示它.