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中判断一个字符串包含另一个字符串的方法
Mar 19 PHP
PHP 数组遍历顺序理解
Sep 09 PHP
IP攻击升级,程序改进以对付新的攻击
Nov 23 PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 PHP
PHP 第一节 php简介
Apr 28 PHP
使用Discuz关键词服务器实现PHP中文分词
Mar 11 PHP
php内嵌函数用法实例
Mar 20 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
调试WordPress中定时任务的相关PHP脚本示例
Dec 10 PHP
thinkPHP中验证码的简单使用方法
Dec 26 PHP
Symfony2实现在controller中获取url的方法
Mar 18 PHP
PHP查询附近的人及其距离的实现方法
May 11 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中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
jquery json 实例代码
2010/12/02 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
jQuery实现简单二级下拉菜单
2015/04/12 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
ES6数组与对象的解构赋值详解
2019/06/14 Javascript
详解supervisor使用教程
2017/11/21 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
学院领导推荐信
2013/10/30 职场文书
我的长生果教学反思
2014/04/28 职场文书
学校校庆演讲稿
2014/05/22 职场文书
品酒会策划方案
2014/05/26 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
小学德育工作总结2015
2015/05/12 职场文书
研讨会致辞
2015/07/31 职场文书
数据库连接池
2021/04/06 MySQL
Python实现生活常识解答机器人
2021/06/28 Python
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android