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下的权限算法的实现
Apr 28 PHP
mysql,mysqli,PDO的各自不同介绍
Sep 19 PHP
php实现文件下载更能介绍
Nov 23 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
Sep 28 PHP
PHP防止跨域提交表单
Nov 01 PHP
ThinkPHP多表联合查询的常用方法
Mar 24 PHP
php include类文件超时问题处理
Feb 06 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
Mar 22 PHP
PHP中子类重载父类的方法【parent::方法名】
May 06 PHP
php 策略模式原理与应用深入理解
Sep 25 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生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
2015/01/13 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
javascript数组的使用
2013/03/28 Javascript
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
jQuery删除节点用法示例(remove方法)
2016/09/08 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
vue.js整合mint-ui里的轮播图实例代码
2017/12/27 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
python pickle 和 shelve模块的用法
2013/09/16 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
python如何统计代码运行的时长
2019/07/24 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
2019/09/11 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
python打开文件的方式有哪些
2020/06/29 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
主管职责范文
2013/11/09 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
Python OpenCV实现图形检测示例详解
2022/04/08 Python
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers
table不让td文字溢出操作方法
2022/12/24 HTML / CSS