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 相关文章推荐
zen cart新进商品的随机排序修改方法
Sep 10 PHP
php urlencode()与urldecode()函数字符编码原理详解
Dec 06 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
Jun 29 PHP
php+js实现图片的上传、裁剪、预览、提交示例
Aug 27 PHP
php加密解密实用类分享
Jan 07 PHP
php防止伪造的数据从URL提交方法
Jun 27 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
Jul 07 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
Oct 14 PHP
thinkphp 手机号和用户名同时登录
Jan 20 PHP
浅谈PHP匿名函数和闭包
Mar 08 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
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
ThinkPHP3.1.3版本新特性概述
2014/06/19 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
2016/03/25 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
PHP 实现缩略图
2021/03/09 PHP
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
关于jQuery判断元素是否存在的问题示例探讨
2014/07/21 Javascript
jQuery中each()方法用法实例
2014/12/27 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
2017/11/27 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python函数返回值实例分析
2015/06/08 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
python两个list[]相加的实现方法
2020/09/23 Python
HTML5的文档结构和新增标签完全解析
2017/04/21 HTML / CSS
移动端html5判断是否滚动到底部并且下拉加载
2019/11/19 HTML / CSS
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
小学教育毕业生自荐信
2013/11/18 职场文书
岗位职责的构建方法
2014/02/01 职场文书
犯错检讨书
2014/02/21 职场文书
党员三严三实心得体会
2014/10/13 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
入党团支部推荐意见
2015/06/02 职场文书
退伍军人感言
2015/08/01 职场文书
Python pygame实现中国象棋单机版源码
2021/06/20 Python