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 相关文章推荐
通过ICQ网关发送手机短信的PHP源程序
Oct 09 PHP
浅析关于PHP位运算的简单权限设计
Jun 30 PHP
php实现的短网址算法分享
Jun 20 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
php中cookie实现二级域名可访问操作的方法
Nov 11 PHP
PHP程序员必须清楚的问题汇总
Dec 18 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
php base64 编码与解码实例代码
Mar 21 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
Sep 30 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
Mar 18 PHP
php模拟post提交请求调用接口示例解析
Aug 07 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学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
php中转义mysql语句的实现代码
2011/06/24 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
JQuery中的$.getJSON 使用说明
2011/03/10 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
js报$ is not a function 的问题的解决方法
2014/01/20 Javascript
jQuery插件boxScroll实现图片轮播特效
2015/07/14 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
angularjs http与后台交互的实现示例
2018/12/21 Javascript
Python代理抓取并验证使用多线程实现
2013/05/03 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
python Flask实现restful api service
2017/12/04 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
python Django框架实现web端分页呈现数据
2019/10/31 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
酒店总经理工作职责
2013/12/13 职场文书
安全事故检讨书
2014/01/18 职场文书
军训 自我鉴定
2014/02/03 职场文书
研究生求职自荐书
2014/06/23 职场文书
升学宴答谢词
2015/01/05 职场文书
搞笑婚庆主持词
2015/06/29 职场文书
MySQL修炼之联结与集合浅析
2021/10/05 MySQL
mysql幻读详解实例以及解决办法
2022/06/16 MySQL
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android