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实现ping
Oct 09 PHP
memcached 和 mysql 主从环境下php开发代码详解
May 16 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
Jun 07 PHP
深入PHP获取随机数字和字母的方法详解
Jun 06 PHP
PHP CURL获取cookies模拟登录的方法
Nov 04 PHP
php像数组一样存取和修改字符串字符
Mar 21 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
PHP整合七牛实现上传文件
Jul 03 PHP
PHP处理会话函数大总结
Aug 05 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 PHP
php pdo连接数据库操作示例
Nov 18 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
2013/05/30 Javascript
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
onbeforeunload与onunload事件异同点总结
2013/06/24 Javascript
JS数组的遍历方式for循环与for...in
2014/07/31 Javascript
AngularJs Dependency Injection(DI,依赖注入)
2016/09/02 Javascript
NodeJs通过async/await处理异步的方法
2017/10/09 NodeJs
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
2020/10/30 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
使用Python下载Bing图片(代码)
2013/11/07 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
python绘制雷达图实例讲解
2021/01/03 Python
详解Python 中的 defaultdict 数据类型
2021/02/22 Python
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
John Varvatos官方网站:设计师男士时装
2017/02/08 全球购物
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
测绘工程专业个人自我评价
2013/12/01 职场文书
业务员岗位职责范本
2013/12/15 职场文书
工厂总经理岗位职责
2014/02/07 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
学生打架检讨书
2014/10/20 职场文书
通用员工手册范本
2015/05/14 职场文书
Python实战之实现简易的学生选课系统
2021/05/25 Python
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
Tomcat用户管理的优化配置详解
2022/03/31 Servers