Laravel中错误与异常处理的用法示例

前端之家收集整理的这篇文章主要介绍了Laravel中错误与异常处理的用法示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

在本文中,我们将探讨 Laravel Web 框架中最重要和最少讨论的功能之一 - 异常处理。 Laravel 带有一个内置的异常处理程序,可以让您轻松地以友好的方式报告和呈现异常。

Laravel 自带错误和异常处理,App\Exceptions\Handler 负责上报异常和如何返回内容,以及未登录的处理。

App\Exceptions\Handler 位于 app\Exceptions\Handler.PHP,下面介绍这个类的属性用法。好了,话不多说了,来一起看看详细的介绍吧

忽略异常

在 $dontReport 中可以定义忽略的异常类名:

PHP;"> protected $dontReport = [ \Illuminate\Auth\AuthenticationException::class,\Illuminate\Auth\Access\AuthorizationException::class,\Symfony\Component\HttpKernel\Exception\HttpException::class,\Illuminate\Database\Eloquent\ModelNotFoundException::class,\Illuminate\Validation\ValidationException::class,];

这些异常就不会经过 report 方法

几个重要方法

主要介绍这三个方法,report,render 和 unauthenticated 的用法

report方法

report 方法可以用来记录日志,可以根据不同的异常类型(包括自定义异常类型),如 ClientException,ConnectException 定制不同的日志级别和日志内容

PHP;"> if ($exception instanceof ABCException) { Log::emergency('ABC异常',$context); } else if ($exception instanceof HeheException) { Log::info('Hehe异常',$context); }

report 方法没有返回值,也不应该在这里中断程序。

render方法

render 方法可以根据不同的异常类型,返回不同的数据。如:

json(['message' => $exception->getMessage()],400); } elseif ( $exception instanceof ValidationException) { return response()->json(['message' => '校验失败','errors'=> $exception->validator->errors()],400); }

unauthenticated

在访问需要登录态的页面时,用户登录就会进入这个方法进行处理,举个例子说明:

expectsJson()) { return response()->json(['error' => 'Unauthenticated.'],401); }

//如果是后台页面未认证,跳转后台登陆页面
$guard = $exception->guards();
if (in_array('admin',$guard)) {
return redirect()->guest('/admin/login');
}

return redirect()->guest('login');
}

如果是返回 json,则统一返回格式。

默认情况下返回前台登录页,如果是访问后台页面登录,则跳转后台登录页。

官方文档

Laravel 5.6

https://laravel-china.org/docs/laravel/5.6/errors/1373

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程之家的支持

原文链接:https://www.f2er.com/laravel/15669.html

猜你在找的Laravel相关文章