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简单封装了一些常用JS操作
Feb 25 PHP
jq的get传参数在utf-8中乱码问题的解决php版
Jul 23 PHP
PHP 文件扩展名 获取函数
Jun 03 PHP
PHP异步调用socket实现代码
Jan 12 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
Feb 06 PHP
基于php权限分配的实现代码
Apr 28 PHP
php防止伪造的数据从URL提交方法
Jun 27 PHP
PHP实现中文圆形印章特效
Jun 19 PHP
基于PHP技术开发客服工单系统
Jan 06 PHP
php实现查询功能(数据访问)
May 23 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
Feb 08 PHP
PHP代码覆盖率统计详解
Jul 22 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
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
php中header设置常见文件类型的content-type
2015/06/23 PHP
jQuery图片切换插件jquery.cycle.js使用示例
2014/06/16 Javascript
微信中一些常用的js方法汇总
2015/03/12 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
JavaScript利用闭包实现模块化
2017/01/13 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
PyQt5每天必学之拖放事件
2020/08/27 Python
详解python多线程之间的同步(一)
2019/04/03 Python
python-tornado的接口用swagger进行包装的实例
2019/08/29 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
Python类成员继承重写的实现
2020/09/16 Python
python 如何引入协程和原理分析
2020/11/30 Python
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
物业管理公司实习生自我鉴定
2013/09/19 职场文书
工程部主管岗位职责
2013/11/17 职场文书
求职教师自荐书
2014/06/19 职场文书
社团活动总结书
2014/06/27 职场文书
2014年预备党员学习新党章思想汇报
2014/09/15 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书
靠谱的活动总结
2019/04/16 职场文书
工作报告范文
2019/06/20 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记