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 相关文章推荐
php生成WAP页面
Oct 09 PHP
一道关于php变量引用的面试题
Aug 08 PHP
php数组的一些常见操作汇总
Jul 17 PHP
php指定函数参数默认值示例代码
Dec 04 PHP
php中的filesystem文件系统函数介绍及使用示例
Feb 13 PHP
ThinkPHP实现事务回滚示例代码
Jun 23 PHP
PHP实现的下载远程图片自定义函数分享
Jan 28 PHP
PHP中把对象转换为关联数组代码分享
Apr 09 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
Sep 25 PHP
PHP自带方法验证邮箱是否存在
Feb 01 PHP
Linux下编译redis和phpredis的方法
Apr 07 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 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 empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
深入解析php中的foreach函数
2013/08/31 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
JS实现自动定时切换的简洁网页选项卡效果
2015/10/13 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
基于Python的身份证号码自动生成程序
2014/08/15 Python
Python网络爬虫实例讲解
2016/04/28 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
简单了解Django ContentType内置组件
2019/07/23 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
Python&amp;&amp;GDAL实现NDVI的计算方式
2020/01/09 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
优秀驾驶员先进事迹材料
2014/05/04 职场文书
教师求职信
2014/06/17 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
通知格式
2015/04/27 职场文书
英文辞职信范文
2015/05/13 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android