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


Posted in PHP onOctober 18, 2020

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

方法如下:

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

<?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,便不会使用自带的错误处理,而使用自定义的处理。

<?php

namespace App\Exceptions;

use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;

class Handler extends ExceptionHandler
{
 /**
  * 一些不需管或不需要抛出的异常
  */
 protected $dontReport = [
  ApiException::class,
 ];

 ...
}

我们测试一下:

<?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;
 }
}

查看输出:

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

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

总结

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

PHP 相关文章推荐
CodeIgniter生成网站sitemap地图的方法
Nov 13 PHP
PHP中使用curl伪造IP的简单方法
Aug 07 PHP
PHP提高编程效率的20个要点
Sep 23 PHP
PHP扩展开发教程(总结)
Nov 04 PHP
php排序算法实例分析
Oct 17 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
PHP完全二叉树定义与实现方法示例
Oct 09 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
ThinkPHP 3使用OSS的方法
Jul 19 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
PHP fopen函数用法实例讲解
Feb 15 PHP
详解phpstorm2020最新破解方法
Sep 17 PHP
Yii中特殊行为ActionFilter的使用方法示例
Oct 18 #PHP
PHP 99乘法表的几种实现代码
Oct 13 #PHP
php7连接MySQL实现简易查询程序的方法
Oct 13 #PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 #PHP
如何利用PHP实现上传图片功能详解
Sep 24 #PHP
JS中彻底删除JSON对象组成的数组中的元素
Sep 22 #PHP
phpstudy隐藏index.php的方法
Sep 21 #PHP
You might like
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
Node.js开发指南中的简单实例(mysql版)
2013/09/17 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
2018/10/30 Javascript
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
Python list操作用法总结
2015/11/10 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
python中requests小技巧
2017/05/10 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
Selenium的使用详解
2018/10/19 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
大学毕业生个人自荐信范文
2014/01/08 职场文书
教师节促销活动方案
2014/02/14 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
行政主管职责范本
2014/03/07 职场文书
专业技术职务聘任书
2014/03/29 职场文书
3分钟英语演讲稿
2014/04/29 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
党员民主生活会材料
2014/12/15 职场文书
民间借贷借条如何写
2015/05/26 职场文书
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电