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 相关文章推荐
实现树状结构的两种方法
Oct 09 PHP
swfupload 多文件上传实现代码
Aug 27 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
PHP求最大子序列和的算法实现
Jun 24 PHP
PHP的explode和implode的使用说明
Jul 17 PHP
php数组(array)输出的三种形式详解
Jun 05 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
May 19 PHP
php将html转为图片的实现方法
May 19 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 PHP
Thinkphp 框架扩展之类库扩展操作详解
Apr 23 PHP
php屏蔽错误及提示的方法
May 10 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的QRcode类与大家分享
2011/11/13 PHP
PHP 第二节 数据类型之转换
2012/04/28 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
php 7新特性之类型申明详解
2017/06/06 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
JavaScript动态创建div属性和样式示例代码
2013/10/09 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
Js apply方法详解
2017/02/16 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
详解基于angular-cli配置代理解决跨域请求问题
2017/07/05 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
js数据类型检测总结
2018/08/05 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
python中有关时间日期格式转换问题
2019/12/25 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
师范生求职信
2014/06/14 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
离职信范文
2015/06/23 职场文书
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript