Laravel统一错误处理为JSON的方法介绍

吾爱主题 阅读:117 2021-10-27 13:45:00 评论:0

Laravel中的AppExceptionsHandler 类负责记录应用程序触发的所有异常,这在我们开发过程中十分方便,总是try...catch使代码太过繁琐且可读性大大降低,那么怎么使用它处理异常为json呢?

方法如下:

我们可以新建一个class,用来处理异常返回。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 <?php /**   * Author: sai   * Date: 2020/1/15   * Time: 14:31   */   namespace App\Exceptions;     class ApiException extends \Exception {   const ERROR_CODE = 1001;   const ERROR_MSG = 'ApiException' ;     private $data = [];     /**    * BusinessException constructor.    *    * @param string $message    * @param string $code    * @param array $data    */   public function __construct(string $message , string $code , $data = [])   {    $this ->code = $code ? : self::ERROR_CODE;    $this ->message = $message ? : self::ERROR_MSG;    $this ->data = $data ;   }     /**    * @return array    */   public function getData()   {    return $this ->data;   }     /**    * 异常输出    */   public function render( $request )   {    return response()->json([     'data' => $this ->getData(),     'code' => $this ->getCode(),     'messgae' => $this ->getMessage(),    ], 200);   } }

然后我们在Handler加入,加入$dontReport,便不会使用自带的错误处理,而使用自定义的处理。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?php   namespace App\Exceptions;   use Exception; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;   class Handler extends ExceptionHandler {   /**    * 一些不需管或不需要抛出的异常    */   protected $dontReport = [    ApiException:: class ,   ];     ... }

我们测试一下:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?php   namespace App\Http\Controllers;   use App\Exceptions\ApiException; use Illuminate\Http\Request;   class HomeController extends Controller {   public function index(Request $request )   {    throw new ApiException( 'error' , 10001, [ 'oh' => 'no' ]);    return 1;   } }

查看输出:

测试ok,我们可以愉快的使用啦。当然,其他形式的错误输出可以自行扩展。

总结

到此这篇关于Laravel统一错误处理为JSON的文章就介绍到这了,更多相关Laravel统一错误处理为JSON内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://segmentfault.com/a/1190000037512757

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容