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上的memcache和memcached两个pecl库
Mar 29 PHP
php 无限级数据JSON格式及JS解析
Jul 17 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
Jun 10 PHP
PHP session会话的安全性分析
Sep 08 PHP
PHP数据集构建JSON格式及新数组的方法
Nov 07 PHP
解析:使用php mongodb扩展时 需要注意的事项
Jun 18 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
Jun 21 PHP
php实现过滤表单提交中html标签的方法
Oct 17 PHP
ThinkPHP中RBAC类的四种用法分析
Nov 24 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 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
PHP XML操作类DOMDocument
2009/12/16 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
js中关于一个分号的崩溃示例
2013/11/11 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
Bootstrap3 Grid system原理及应用详解
2016/09/30 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
2016/11/24 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
利用iscroll4实现轮播图效果实例代码
2017/01/11 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
Python读写Json涉及到中文的处理方法
2016/09/12 Python
SVM基本概念及Python实现代码
2017/12/27 Python
对python多线程与global变量详解
2018/11/09 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
Python assert关键字原理及实例解析
2019/12/13 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
C#面试题问题集
2016/04/02 面试题
机电一体化自荐信
2013/12/10 职场文书
高二地理教学反思
2014/01/24 职场文书
岗位竞聘演讲稿范文
2014/04/24 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
2014年妇联工作总结
2014/11/21 职场文书
食品药品安全责任书
2015/05/11 职场文书
中学后勤工作总结2015
2015/07/22 职场文书
班主任工作总结范文
2015/08/13 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
Nginx中使用Lua脚本与图片的缩略图处理的实现
2022/03/18 Servers