当前位置: 首页 > news >正文

Java的全局异常处理代码

第一步:先写一个异常管理类:

package com.example.firefighting.exceptions;import com.example.firefighting.utils.Result;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;import static com.example.firefighting.utils.XiaofangConstants.SYSTEM_ANOMALY;/*** 异常处理* @author IT空门_门主* @date 2024/7/2*/@RestControllerAdvice
public class XiaofangException {/*** 全局异常*/@ExceptionHandler(value = Exception.class)public Result globalException() {return Result.fail(SYSTEM_ANOMALY);}/*** 业务异常处理* @param e* @return*/@ExceptionHandler(value = ServiceException.class)public Result serviceException(ServiceException e) {return Result.fail(e.getCode(), e.getMessage());}}
  1. 我这里定义了两个异常:一个是全局异常和业务的异常。 项目大的情况下可以自定义更多的异常

第二步:业务的异常继承了运行异常

package com.example.firefighting.exceptions;import lombok.Data;
import lombok.EqualsAndHashCode;/*** 业务逻辑异常 Exception*/
@Data
@EqualsAndHashCode(callSuper = true)
public final class ServiceException extends RuntimeException {/*** 业务错误码*/private Integer code;/*** 错误提示*/private String message;public ServiceException(Integer code, String message) {this.code = code;this.message = message;}}
  1. 业务的异常中,可以通过自己的业务,编写自己的业务逻辑。
  2. 我是为了统一管理业务错误,编写了有参构造接收错误信息

第三步:工具类

package com.example.firefighting.exceptions.utils;import com.example.firefighting.exceptions.ServiceException;
import com.example.firefighting.utils.ErrorCode;import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;/*** @author IT空门_门主* @description: 自定义异常工具类* @date 2024/7/2*/public class ServiceExceptionUtil {/*** 错误码提示模板*/private static final ConcurrentMap<Integer, String> MESSAGES = new ConcurrentHashMap<>();/*** 自定义异常*/public static ServiceException exception(ErrorCode errorCode) {String messagePattern = MESSAGES.getOrDefault(errorCode.getCode(), errorCode.getMsg());return exception0(errorCode.getCode(), messagePattern);}private static ServiceException exception0(Integer code, String messagePattern) {return new ServiceException(code, messagePattern);}}

1.ConcurrentHashMap:

用于多线程环境,允许多个线程同时读写映射而不会引起数据不一致的问题。ConcurrentHashMap是ConcurrentMap的一个实现,提供了高效的并发性能。

第四步:错误枚举

package com.example.firefighting.enums;import com.example.firefighting.utils.ErrorCode;/*** 错误码枚举类* device 系统 从 1001开始-9999结束 不可重复* @author IT空门_门主* @date 2024/7/2*/public interface ErrorCodeConstants {ErrorCode USER_DOES_NOT_EXIST = new ErrorCode(1001, "该用户不存在");ErrorCode USER_IS_DISABLED = new ErrorCode(1002, "该用户已被禁用");ErrorCode INCORRECT_USERNAME_OR_PASSWORD = new ErrorCode(1003, "用户名或密码错误");
}

1.管理业务所有的错误码

商务合作:z13135361785  

技术交流:z13135361785  

相关文章:

Java的全局异常处理代码

第一步&#xff1a;先写一个异常管理类: package com.example.firefighting.exceptions;import com.example.firefighting.utils.Result; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerA…...

Hi3861 OpenHarmony嵌入式应用入门--LiteOS semaphore作为锁

CMSIS 2.0 接口中的 Semaphore&#xff08;信号量&#xff09;是用于嵌入式系统中多线程或中断服务例程&#xff08;ISR&#xff09;之间同步和共享资源保护的重要机制。Semaphore 是一种用于控制对多个共享资源访问的同步机制。它可以被看作是一个计数器&#xff0c;用于跟踪可…...

注意!年龄越大,社交圈子越窄?其实这是老人的理性选择!数学家告诉你:何时该跳槽,何时该坚守!你必须知道的三个智慧:让你的人生更加精彩!

我们到底应该在什么情况下探索新事物&#xff0c;什么情况下专注于已有的东西呢&#xff1f;本质上来说&#xff0c;这个问题就是在询问&#xff0c;你究竟应该耗费精力去探索新的信息&#xff0c;还是专注从既有的信息中获取收获&#xff1f; 有人采访了临终的老人&#xff0c…...

[SwiftUI 开发] 嵌套的ObservedObject中的更改不会更新UI

1. 发生问题的demo 业务逻辑代码 class Address: ObservableObject {Published var street "123 Apple Street"Published var city "Cupertino" }class User: ObservableObject {Published var name "Tim Cook"Published var address Addr…...

全面了解机器学习

目录 一、基本认识 1. 介绍 2. 机器学习位置 二、机器学习的类型 1. 监督学习 2. 无监督学习 3. 强化学习 三、机器学习术语 1. 训练样本 2. 训练 3. 特征 4. 目标 5. 损失函数 四、机器学习流程 五、机器学习算法 1. 分类算法 2. 聚类算法 3. 关联分析 4. …...

作为图形渲染API,OpenGL和Direct3D的全方位对比。

当你在网页看到很多美轮美奂的图形效果&#xff0c;3D交互效果&#xff0c;你知道是如何实现的吗&#xff1f;当然是借助图形渲染API了&#xff0c;说起这个不就不得说两大阵营&#xff0c;OpenGL和Direct3D&#xff0c;贝格前端工场在本文对二者做个详细对比。 一、什么是图形…...

安装Rabbitmq遇到的坑

&#xff01;&#xff01;&#xff01;一定要对号版本号 不同的虚拟机unbontu、cetenos和不同的erlang和不同的rabbitmq之间要对应下载对应版本 下面给出我的版本centos7erlangrabbitmq 分割线 安装好后&#xff0c;如果在虚拟机的服务器上可以打开&#xff0c;在本地浏览器…...

React+TS 从零开始教程(4):useEffect

上一节传送门&#xff1a;ReactTS 从零开始教程&#xff08;3&#xff09;&#xff1a;useState 源码链接&#xff1a;https://pan.quark.cn/s/c6fbc31dcb02 上一节&#xff0c;我们已经学会了React的第一个Hook&#xff1a;useState。 这一节&#xff0c;我们要学习的是另一…...

网络安全学习路线图(2024版详解)

近期&#xff0c;大家在网上对于网络安全讨论比较多&#xff0c;想要学习的人也不少&#xff0c;但是需要学习哪些内容&#xff0c;按照什么顺序去学习呢&#xff1f;其实我们已经出国多版本的网络安全学习路线图&#xff0c;一直以来效果也比较不错&#xff0c;本次我们针对市…...

你了解人工智能吗?

前言 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是计算机科学的一个重要分支&#xff0c;致力于开发能够执行通常需要人类智能的任务的系统。本文将从历史发展、关键技术、应用领域以及未来挑战等方面&#xff0c;深入探讨人工智能的相关内容。 …...

如何使用Vue.js实现动态文档生成与下载功能

在现代Web应用开发中&#xff0c;用户往往需要在浏览器端完成复杂的操作&#xff0c;如生成和下载特定格式的文档&#xff0c;而无需服务器直接干预。本文将以一个Vue.js应用程序为例&#xff0c;详细介绍如何利用axios&#xff08;或自定义请求模块&#xff09;结合FileReader…...

web基础及http协议

一、WEB&#xff1a;就是我们所说的页面&#xff0c;点开的每个页面都是web。&#xff08;全球广域网、万维网&#xff09; 分布式图形信息系统&#xff1a;同一个服务&#xff0c;但是部署在不同的机器上且提供的服务和内容全部一致&#xff0c;集群就是建立在分布式的基础上。…...

【vuejs】vue-router 之 addRoute 动态路由的应用总结

1. Vue Router 概述 Vue Router 是 Vue.js 官方的路由管理器&#xff0c;用于构建单页面应用。它与 Vue.js 深度集成&#xff0c;让开发者能够轻松地构建具有复杂用户界面的单页面应用。Vue Router 允许你定义不同的路由&#xff0c;并通过 router-view 组件在应用中显示匹配的…...

LeetCode 30. 串联所有单词的子串

LeetCode 30. 串联所有单词的子串 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如&#xff0c;如果 words [“ab”,“cd”,“ef”]&#xff0c; 那么 “abcd…...

python本学期所有代码!

第一单元 ----------------------------------------------------------------------- #圆面积的计算 radius 25 area 3.1415 * radius * radius print(area) print("{:.2f}".format(area)) --------------------------------------------------------------------…...

武汉星起航:无锡跨境电商加速“出海”,物流升级助品牌全球布局

随着全球化的不断深入&#xff0c;跨境电商作为数字外贸的新业态&#xff0c;正逐渐成为无锡企业拓展海外市场的重要渠道。武汉星起航关注到&#xff0c;近年来&#xff0c;无锡市通过积极推进国际物流枢纽建设&#xff0c;完善海外仓布局&#xff0c;以及各特色产业带的积极参…...

Python+Pytest+Allure+Yaml+Pymysql+Jenkins+GitLab接口自动化测试框架详解

PythonPytestAllureYaml接口自动化测试框架详解 编撰人&#xff1a;CesareCheung 更新时间&#xff1a;2024.06.20 一、技术栈 PythonPytestAllureYamlJenkinsGitLab 版本要求&#xff1a;Python3.7.0,Pytest7.4.4,Allure2.18.1,PyYaml6.0 二、环境配置 安装python3.7&…...

stm32-hal库(5)--usart串口通信三种模式(主从通信)(关于通信失败和串口不断发送数据问题的解决)

问题&#xff1a; 最近发现&#xff0c;stm32cubemx最新版本f1系列的hal库&#xff08;1.85版本&#xff09;生成的hal库&#xff0c;其中stm32f1xx_hal_uart.c的库文件中&#xff0c;其串口发送接收存在一些问题&#xff1a; 1.没有使用 __HAL_LOCK 和 __HAL_UNLOCK 宏&…...

一文学会LVS:概念、架构、原理、搭建过程、常用命令及实战案例

引言 随着互联网技术的飞速发展&#xff0c;服务器负载均衡技术变得越来越重要。LVS&#xff08;Linux Virtual Server&#xff09;作为一种高效的负载均衡解决方案&#xff0c;广泛应用于各大企业的生产环境中。本文将深入探讨LVS的概念、架构、工作原理&#xff0c;详细讲解其…...

[Go 微服务] Kratos 使用的简单总结

文章目录 1.Kratos 简介2.传输协议3.日志4.错误处理5.配置管理6.wire 1.Kratos 简介 Kratos并不绑定于特定的基础设施&#xff0c;不限定于某种注册中心&#xff0c;或数据库ORM等&#xff0c;所以您可以十分轻松地将任意库集成进项目里&#xff0c;与Kratos共同运作。 API -&…...

基于PyPortal与光传感器的物联网闭环控制:从单向指令到可靠状态反馈

1. 项目概述与核心价值如果你曾经尝试过用手机远程开关家里的台灯或者风扇&#xff0c;大概率会接触到“物联网”这个概念。简单来说&#xff0c;物联网就是让物理世界的“物”&#xff08;比如电器、传感器&#xff09;能够接入互联网&#xff0c;变得可以被远程感知和控制。听…...

0-π量子比特保护机制与受控相位门设计

1. 0-π量子比特的物理实现与保护机制1.1 多模电路编码原理0-π量子比特是一种基于超导电路的多模编码量子比特&#xff0c;其核心设计理念是通过电路中的θ和φ两个非线性耦合模式来实现量子态的编码。这种双模编码结构使其相比传统单模超导量子比特&#xff08;如transmon或f…...

开源AI智能体dreamGPT:让大语言模型学会自主思考与目标探索

1. 项目概述&#xff1a;当AI学会“做梦”&#xff0c;一个开源智能体的自我进化实验最近在开源社区里&#xff0c;一个名为dreamGPT的项目引起了我的注意。它来自 DivergentAI&#xff0c;名字本身就充满了想象力——“梦想GPT”。这可不是一个简单的聊天机器人或者代码生成工…...

从create-codex项目看AI代码生成工具的工程化集成实践

1. 项目概述&#xff1a;从“create-codex”看AI代码生成工具的深度集成最近在GitHub上看到一个挺有意思的项目&#xff0c;叫ramonclaudio/create-codex。光看这个名字&#xff0c;很多开发者可能就会心一笑——“create”前缀加上“codex”&#xff0c;这不就是围绕OpenAI的C…...

DeepSeek LeetCode 2376.统计特殊整数 public int countSpecialNumbers(int n)

这是 LeetCode 2376 题&#xff1a;统计特殊整数。题目理解特殊整数&#xff1a;十进制表示中每一位数字都不同的整数。例如&#xff1a;123、20、5 都是特殊的&#xff0c;但 11、121 不是。要求统计 [1, n] 范围内特殊整数的数量。解题思路数位 DP (Digit DP) 是标准解法&…...

3分钟免费搞定百度网盘秒传:永久分享大文件的终极解决方案

3分钟免费搞定百度网盘秒传&#xff1a;永久分享大文件的终极解决方案 【免费下载链接】rapid-upload-userscript-doc 秒传链接提取脚本 - 文档&教程 项目地址: https://gitcode.com/gh_mirrors/ra/rapid-upload-userscript-doc 你是否厌倦了百度网盘分享链接频繁失…...

AI智能体规划框架skill-daydreaming:让AI像人一样思考与执行复杂任务

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“skill-daydreaming”&#xff0c;作者是regiep4。光看这个名字&#xff0c;你可能觉得有点玄乎——“技能白日梦”&#xff1f;这到底是干嘛的&#xff1f;作为一个在AI和自动化工具领域折腾了十多年…...

别再手动检查打印机了!用C#写个Windows服务,自动监控HP/Epson等打印机状态并微信通知

打造智能打印机监控系统&#xff1a;基于C#的Windows服务实战指南 打印机故障总是悄无声息地发生——当你急需打印合同时发现缺纸&#xff0c;演示前五分钟发现墨盒耗尽&#xff0c;或是批量打印时某个设备早已脱机。这些场景对IT运维人员来说再熟悉不过&#xff0c;而传统的人…...

5分钟掌握Windows和Office激活:KMS_VL_ALL_AIO完整指南

5分钟掌握Windows和Office激活&#xff1a;KMS_VL_ALL_AIO完整指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为电脑上的Windows系统或Office软件提示"需要激活"而烦恼吗&am…...

【ElevenLabs旁白语音工业级交付标准】:帧精度±3ms同步、响度LUFS≤-23、动态范围≥14dB——你达标了吗?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs纪录片旁白语音工业级交付标准全景定义 在纪录片制作工业化进程中&#xff0c;旁白语音已从“可用即可”跃迁至“毫秒级对齐、语义级情感建模、多语种零偏差复现”的交付新范式。ElevenLabs …...