• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Laravel中错误与异常处理的用法示例

    前言

    在本文中,我们将探讨 Laravel Web 框架中最重要和最少讨论的功能之一 - 异常处理。 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,则统一返回格式。

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

    官方文档

    Laravel 5.6

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

    总结

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

    您可能感兴趣的文章:
    • laravel框架 api自定义全局异常处理方法
    • Laravel 5.5 异常处理 & 错误日志的解决
    • Laravel核心解读之异常处理的实践过程
    • Laravel如何实现适合Api的异常处理响应格式
    • 如何重写Laravel异常处理类详解
    上一篇:laravel获取不到session的三种解决办法【推荐】
    下一篇:Laravel用户授权系统的使用方法示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

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