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 发送带附件邮件示例
Jan 23 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
Sep 23 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
Oct 01 PHP
Yii框架关联查询with用法分析
Dec 02 PHP
php连接oracle数据库及查询数据的方法
Dec 29 PHP
php实现专业获取网站SEO信息类实例
Apr 02 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
Dec 08 PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 PHP
php使用file函数、fseek函数读取大文件效率对比分析
Nov 04 PHP
Laravel开启跨域请求的方法
Oct 13 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
php判断IP地址是否在多个IP段内
Aug 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
PHP的curl函数的用法总结
2019/02/14 PHP
PHP递归算法的简单实例
2019/02/28 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
js canvas实现二维码和图片合成的海报
2020/11/19 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
详解python中的数据类型和控制流
2019/08/08 Python
python实现证件照换底功能
2019/08/20 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
Linux上比较文件的命令都有哪些
2012/02/24 面试题
服务理念标语
2014/06/18 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
学院党的群众路线教育实践活动整改方案
2014/10/04 职场文书
群众路线教育实践活动实施方案
2014/10/31 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis