扣丁学堂PHP培训简述Laravel中错误与异常处理的用法示例

2019-09-19 10:34:18 3170浏览

本篇文章扣丁学堂PHP培训小编将带小伙伴们探讨Laravel Web框架中最重要和最少讨论的功能之一异常处理,Laravel带有一个内置的异常处理程序,可以让您轻松地以友好的方式报告和呈现异常。异常抛出在开发中错误处理是非常重要的,下面是关于Laravel中错误与异常处理用法的相关资料,感兴趣的小伙伴就随小编来了解一下吧。


扣丁学堂PHP培训简述Laravel中错误与异常处理的用法示例


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


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


忽略异常


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


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 定制不同的日志级别和日志内容。


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


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



render方法


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


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



unauthenticated


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


protected function unauthenticated($request, AuthenticationException $exception)
{
 if ($request->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,则统一返回格式。


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


想要了解更多关于PHP开发方面内容的小伙伴,请关注扣丁学堂PHP培训官网、微信等平台,扣丁学堂IT职业在线学习教育有专业的PHP讲师为您指导,此外扣丁学堂老师精心推出的PHP视频教程定能让你快速掌握PHP从入门到精通开发实战技能。扣丁学堂PHP技术交流群:374332265。


                          JavaEE/微服务/源码解析/分布式/企业级架构【VIP体验课】


     【关注微信公众号获取更多学习资料】        【扫码进入JavaEE/微服务VIP免费公开课】  



查看更多关于“php培训资讯”的相关文章>>

标签: PHP培训 PHP视频教程 PHP在线视频 PHP学习视频 Laravel框架

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号