Webman全局异常捕获处理

最近在使用webman这个框架做项目开发,涉及到需要统一处理异常捕获。由于官网给的并不详细,于是自己实现了一下全局异常处理类。

一、配置效果

例如:我要在项目中统一返回json 格式数据,并不想在业务层写try,catch逻辑。
或者在业务代码中不小心写出了非语法错误而导致的异常。如在项目中将被除数存在0值的情况而引发的错误。

如在控制器中写了如下代码:

public function testException(){ $i =5/0;return json(['code' => 0, 'msg' => 'ok']);}

正常请求则报错如下
在这里插入图片描述
启用自定义异常后则提示如下:
在这里插入图片描述

二、配置方法

  • 1、新建 app/exception/ApiException.php
<?php
/*** Created by PhpStorm.* User: Administrator* Date: 2024-03-22* Time: 13:30*/
namespace app\exception;use Webman\Exception\ExceptionHandler;
use Webman\Http\Request;
use Webman\Http\Response;
use Throwable;class ApiException extends ExceptionHandler
{public function render(Request $request, Throwable $e): Response{// 处理http 异常 if ($e instanceof \HttpException) {return json(['code'=>0,'msg'=>'http请求失败:'.$e->getMessage(),'data'=>[],'url'=>'','wait'=>3]);}// 可以继续处理其他异常 // .........return json(['code'=>0,'msg'=>'发生了异常:'.$e->getMessage(),'data'=>[],'url'=>'','wait'=>3]);}
}
  • 2、启用自定义异常处理类
    配置 config/exception.php 如下
<?phpreturn ['' => app\exception\ApiException::class,
];

如果您需要在其他插件下启用此异常处理类,只需在插件目录下的 config/exception.php 中启用上面的异常处理类即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/766654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

下载安装anaconda和pytorch的详细方法,以及遇到的问题和解决办法

下载安装Anaconda 首先需要下载Anaconda&#xff0c;可以到官网Anaconda官网或者这里提供一个镜像网站去下载anaconda镜像网站 安装步骤可参考该文章&#xff1a;Anaconda安装步骤&#xff0c;本篇不再赘述 注意环境变量的配置&#xff0c;安装好Anaconda之后一定要在环境变量…

【MySQL】数据操作语言 (DML) 和 数据定义语言 (DDL)

数据操作语言 (DML) 和 数据定义语言 (DDL) 在数据库管理系统中&#xff0c;DML (Data Manipulation Language) 和 DDL (Data Definition Language) 是两个核心的语言类型&#xff0c;用于管理数据库的数据和结构。本文将深入探讨这两种语言的概念、功能以及通过案例演示它们的…

使用POI以OLE对象的形式向excel中插入附件(pdf为例)

前言&#xff1a; 最近在使用easyExcel操作excel文件时&#xff0c;一直想找到一个方法可以往excel中填充附件&#xff0c;但是目前只发现POI可以插入附件&#xff0c;于是将方法记录如下&#xff1a; 实现&#xff1a; 这个方法主要是使用 Apache POI 的 HSSFWorkbook 类来…

opencv-python安装不上(附离线安装包网址和安装方法)

首先参考这个&#xff1a;安装opencv遇到的问题ERROR: Could not find a version that satisfies the requirement opencv (from versions: n-CSDN博客 如果尝试上面的方法也不行的话&#xff1a; 最好的方法就是从网上下载符合自己的操作系统和python版本的opencv-python包和…

2024最新华为OD机试试题库全 -【虚拟理财游戏】- C卷

1. 🌈题目详情 1.1 ⚠️题目 在一款虚拟游戏中生活,你必须进行投资以增强在虚拟游戏中的资产以免被淘汰出局。 现有一家Bank,它提供有若干理财产品 m 个,风险及投资回报不同,你有 N(元)进行投资,能接收的总风险值为X。 你要在可接受范围内选择最优的投资方式获得最…

java实现给Iphone推送消息

大家好我是咕噜美乐蒂&#xff0c;很高兴又和大家见面了&#xff01; 对于 Java 开发者来说&#xff0c;要实现向 iPhone 推送消息&#xff0c;一种常见的方式是通过苹果的推送通知服务&#xff08;APNs&#xff0c;Apple Push Notification service&#xff09;来实现。APNs …

【Java初阶(四)】数组的定义和使用

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; 目录 1.前言2.数组的概念2.1数组的初始化2.2数组的使用2.2.1数组元素访问2.2.2遍历数组 3.数组是引用类型3.1实例3.2 认识null 4.数组的应用4.1 二分查找4.2…

AQS源码分析

前言 AbstractQueuedSynchronizer是抽象同步队列&#xff0c;其是实现同步机器的基础组件&#xff0c;并发包中的锁的底层就是使用AQS实现的。AQS中 维护了一个volatile int state&#xff08;代表共享资源&#xff09;和一个FIFO线程等待队列&#xff08;多线程争用资源被阻塞…

WLAN与WIFI

网工知识&#xff1a;WLAN和WIFI有什么区别_哔哩哔哩_bilibili 请问WLAN就是Wifi吗&#xff1f;不懂网络的人也能听懂!_哔哩哔哩_bilibili WLAN&#xff1a;wireless lan&#xff1a;无线局域网 包括家用WIFI&#xff0c;企业级的无线网络。 包括ZigBee,红外和蓝牙技术。 …

MySQL面试题--开发(最全,涵盖SQL基础、架构、事务)

MySQL面试题--事务https://mp.csdn.net/mp_blog/creation/editor/136947072 MySQL面试题--MySQL内部技术架构https://blog.csdn.net/Timebro/article/details/136946046?spm1001.2014.3001.5501 MySQL面试题--最全面-索引https://blog.csdn.net/Timebro/article/details/136…

Web 中的 3D 游戏

为了 web 上丰富的游戏体验&#xff0c;一个好武器是 webGL&#xff0c;它可以在 HTML <canvas> 元素上渲染。WebGL 基本上是 Web 的 OpenGL ES 2.0 版本——作为一个 JavaScript API&#xff0c;它提供了能构建丰富的交互式动画和游戏的工具。你可以使用硬件加速的 Java…

计算机实体安全

计算机实体安全定义&#xff1a; 对场地环境、设施、设备和载体、人员采取的安全对策和措施。 一、计算机可靠性与故障分析 1.1 计算机的可靠性 可靠性 (狭义) ■计算机在规定时间与条件下完成规定功能的 概率 ■规定条件&#xff1a;环境条件&#xff0c;使用条件&#xff0…

2024年计算机三级|数据库习题整理(自用②)

所有题目均来自【三级数据库技术基础题库】&#xff0c;此博客仅包含部分填空题型&#xff0c;用于自主的回顾学习&#xff0c;仅供参考。 1、DBAS生命周期中&#xff0c;规划与分析的主要工作内容包括系统规划与定义、可行性分析和&#xff08;项目规划&#xff09; 2、DFD方…

软件高级:软件架构评估-基于场景的评估方法

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

Android Studio 和 lombok 的版本适配、gradle依赖配置、插件安装及使用

文章目录 Intro注意事项Android Studio 和 lombok 的版本选择及下载下载链接 在 Android Studio 中安装一次 lombok 插件在每个 gradle 项目中添加 lombok 相关依赖(如要用到)使用ref Intro 用惯了 JavaMavenIDEA 开发后端服务&#xff0c;突然有一天用 JavaGradleAndroidStud…

C# WPF编程-事件

C# WPF编程-路由事件 路由事件概要路由事件的三种方式 WPF事件WPF最重要的5类事件&#xff1a;生命周期事件 鼠标事件键盘事件多点触控输入原始触控 路由事件概要 路由事件是具有更强传播能力的事件&#xff0c;它们可在元素树中向上冒泡和向下隧道传播&#xff0c;并沿着传播…

端口的学习

端口是什么口&#xff1f;【网络常识3】_哔哩哔哩_bilibili 简化后的数据包&#xff1a; 软件和端口是1对多的关系。 http默认端口是80 https默认端口是443

智慧工地解决方案,智慧工地项目管理系统源码,支持大屏端、PC端、手机端、平板端

智慧工地解决方案依托计算机技术、物联网、云计算、大数据、人工智能、VR&AR等技术相结合&#xff0c;为工程项目管理提供先进技术手段&#xff0c;构建工地现场智能监控和控制体系&#xff0c;弥补传统方法在监管中的缺陷&#xff0c;最线实现项目对人、机、料、法、环的全…

神级工具之git (一): git 基操

一切都从&#xff1a;Git User Manual开始&#xff0c;或者中文版的Git中文手册 核心概念 工作区 工作区我们可见的&#xff0c;可以进行修改的目录树。我们可以在目录树中进行文件的查看&#xff0c;修改。通常我们会使用一个神级编辑器Vim。我给她取了个名字&#xff0c;就…

2024年C语言最新经典面试题汇总(1-10)

C语言文章更新目录 C语言学习资源汇总&#xff0c;史上最全面总结&#xff0c;没有之一 C/C学习资源&#xff08;百度云盘链接&#xff09; 计算机二级资料&#xff08;过级专用&#xff09; C语言学习路线&#xff08;从入门到实战&#xff09; 编写C语言程序的7个步骤和编程…