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 相关文章推荐
Dedecms V3.1 生成HTML速度的优化办法
Mar 18 PHP
生成静态页面的php函数,php爱好者站推荐
Mar 19 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
PHP判断是否有Get参数的方法
May 05 PHP
php实现斐波那契数列的简单写法
Jul 19 PHP
PHP中使用json数据格式定义字面量对象的方法
Aug 20 PHP
php下Memcached入门实例解析
Jan 05 PHP
是 WordPress 让 PHP 更流行了 而不是框架
Feb 03 PHP
PHP编写daemon process详解及实例代码
Sep 30 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
使用ucenter实现多站点同步登录的讲解
Mar 21 PHP
禁止直接访问php文件代码分享
May 05 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
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
js 小贴士一星期合集
2010/04/07 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
Python实现的金山快盘的签到程序
2013/01/17 Python
跟老齐学Python之集合的关系
2014/09/24 Python
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
python复制文件到指定目录的实例
2018/04/27 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
python实现银行账户系统
2021/02/22 Python
linux面试题参考答案(10)
2013/11/04 面试题
介绍下static、final、abstract区别
2015/01/30 面试题
大学毕业感言50字
2014/02/07 职场文书
教师工作失职检讨书
2014/09/18 职场文书
公务员考察材料范文
2014/12/23 职场文书
党风廉正建设责任书
2015/01/29 职场文书
春节随笔
2015/08/15 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书