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语法(4)
Oct 09 PHP
我的论坛源代码(三)
Oct 09 PHP
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
Dec 16 PHP
PHP的魔术常量__METHOD__简介
Jul 08 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
PHP通过API获取手机号码归属地
May 28 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
php三种实现多线程类似的方法
Oct 30 PHP
PHP 数组基本操作方法详解
Jun 17 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
PHP中散列密码的安全性分析
Jul 26 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 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实现加强版加密解密类实例
2015/07/29 PHP
PHP中的静态变量及static静态变量使用详解
2015/11/05 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
Jquery实现鼠标移动放大图片功能实例
2015/03/25 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
Angular移动端页面input无法输入的解决方法
2017/11/14 Javascript
AngularJS 应用模块化的使用
2018/04/04 Javascript
如何使用pm2快速将项目部署到远程服务器
2019/03/12 Javascript
Javascript 对象(object)合并操作实例分析
2019/07/30 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
python实现大转盘抽奖效果
2019/01/22 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
餐饮业员工工作决心书
2014/03/11 职场文书
文明礼貌演讲稿
2014/05/12 职场文书
乡镇领导班子四风对照检查材料
2014/09/27 职场文书
党的群众路线教育实践活动个人整改落实情况汇报
2014/10/28 职场文书
Pandas-DataFrame知识点汇总
2022/03/16 Python