laravel 访问不存在的路由跳转问题!(异常处理)

Posted 与f

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel 访问不存在的路由跳转问题!(异常处理)相关的知识,希望对你有一定的参考价值。

1、如果你只是想抛出404错误,debug开关可以满足你;

理论上你把 debug 关了,线上环境是会自动到 404 的。

是想要「跳转到 404 页」还是「显示 404 页」?如果是要跳转的话,请配置 app/Exceptions/handler.php,并在 NotFoundException 被抛出时返回一个 Redirect 响应。

 

2、如果你想处理异常或自定义异常,可参照如下;

在laravel项目根目录下的app下的Exceptions目录下的Handler.php文件;我们可以在这里自定义异常以及处理异常

最常见的莫过于ModelNotFoundException

下面是一个Demo:

route:

xxx.com/article/8

Handler file:

//处理Http响应异常
public function render($request, Exception $e)
{
    switch($e){
        
        //使用类型运算符 instanceof 判断异常(实例)是否为 ModelNotFoundException
        case ($e instanceof ModelNotFoundException):

            //进行异常处理
            return $this->renderException($e);
            break;

        default:

            return parent::render($request, $e);

    }
}

//处理异常
protected function renderException($e)
{

   switch ($e){

       case ($e instanceof ModelNotFoundException):
           
           //自定义处理异常,此处我们返回一个404页面
           return view(‘errors.404‘);
           break;

       default:
       
           //如果异常非ModelNotFoundException,我们返回laravel默认的错误页面
           return (new SymfonyDisplayer(config(‘app.debug‘)))
                  ->createResponse($e);

   }

}

通过上述案例,你可以轻松的处理异常,并给用户一个友好的提示!

 

转:https://segmentfault.com/q/1010000007262633?_ea=1294797

 

以上是关于laravel 访问不存在的路由跳转问题!(异常处理)的主要内容,如果未能解决你的问题,请参考以下文章

如何限制对任何路由的直接访问并抛出 404 异常,即使存在路由?

Laravel 5.2 - 方法身份验证不存在

重定向到资源路由时路由不存在[Laravel]

Laravel 5 - 带有消息“无法准备路由”的异常“LogicException”

Laravel CSRF 令牌不匹配异常。通过 jQuery ajax 向资源路由发送“Put”请求

Laravel 在路由不存在时返回 MethodNotAllowedHttpException