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个人网站架设连环讲(一)
Oct 09 PHP
php面向对象全攻略 (十) final static const关键字的使用
Sep 30 PHP
PHP 变量类型的强制转换
Oct 23 PHP
php学习笔记之 函数声明
Jun 09 PHP
php获取qq用户昵称和在线状态(实例分析)
Oct 27 PHP
php的SimpleXML方法读写XML接口文件实例解析
Jun 16 PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 PHP
实现PHP框架系列文章(6)mysql数据库方法
Mar 04 PHP
PHP编写daemon process详解及实例代码
Sep 30 PHP
利用PHP实现一个简单的用户登记表示例
Apr 25 PHP
PHP PDOStatement::errorCode讲解
Jan 31 PHP
微信推送功能实现方式图文详解
Jul 12 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
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
完美实现GIF动画缩略图的php代码
2011/01/02 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
JavaScript 私有成员分析
2009/01/13 Javascript
JavaScript 变量命名规则
2009/09/23 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
2014/08/30 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
Bootstrap列表组学习使用
2017/02/09 Javascript
基于jQuery实现文字打印动态效果
2017/04/21 jQuery
node和vue实现商城用户地址模块
2018/12/05 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
[01:07:34]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第二场 1月9日
2021/03/11 DOTA
Python实现生成随机数据插入mysql数据库的方法
2017/12/25 Python
Python+tkinter使用80行代码实现一个计算器实例
2018/01/16 Python
python使用magic模块进行文件类型识别方法
2018/12/08 Python
基于python实现百度翻译功能
2019/05/09 Python
python剪切视频与合并视频的实现
2020/03/03 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
香港现代设计家具品牌:Ziinlife Furniture
2018/11/13 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
某科技软件测试面试题
2013/05/19 面试题
工程管理专业个人求职信范文
2013/12/07 职场文书
小学教师节活动方案
2014/01/31 职场文书
体现团队精神的口号
2014/06/06 职场文书
国情备忘录观后感
2015/06/04 职场文书
MySQL锁机制
2021/04/05 MySQL
使用pytorch实现线性回归
2021/04/11 Python