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预定义常量
Dec 25 PHP
php cout&amp;lt;&amp;lt;的一点看法
Jan 24 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 PHP
CodeIgniter图像处理类的深入解析
Jun 17 PHP
PHP中数组定义的几种方法
Sep 01 PHP
php实现的替换敏感字符串类实例
Sep 22 PHP
php建立Ftp连接的方法
Mar 07 PHP
PHP+MySQL实现的简单投票系统实例
Feb 24 PHP
php解析mht文件转换成html的实例
Mar 13 PHP
PHP输出多个元素的排列或组合的方法
Mar 14 PHP
php实现支付宝当面付(扫码支付)功能
May 30 PHP
浅析PHP echo 和 print 语句
Jun 30 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.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
PHP中error_log()函数的使用方法
2015/01/20 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
2008/11/03 Javascript
js 数值项目的格式化函数代码
2010/05/14 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
Python flask框架端口失效解决方案
2020/06/04 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
python实现简单的tcp 文件下载
2020/09/16 Python
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
小学教师培训感言
2014/02/11 职场文书
开业主持词
2014/03/21 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
幼儿学前班评语
2014/12/29 职场文书
2015年重阳节主持词
2015/07/04 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang