当前位置: 首页 > 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  

相关文章:

  • Qt入门教程(一):Qt使用的基本知识
  • SQL面试题练习 —— 查询前2大和前2小用户并有序拼接
  • Vue 与 React 区别
  • 选GPU运行
  • 大模型+多模态合规分析平台,筑牢金融服务安全屏障
  • React+TS 从零开始教程(4):useEffect
  • Qt中使用MySQL数据库详解,好用的模块类封装
  • 比较Java爬虫框架:哪个是最佳选择?
  • PostgreSQL 性能优化与调优(六)
  • Java核心知识(一):JVM
  • PDF一键转PPT文件!这2个AI工具值得推荐,办公必备!
  • Vue 全局状态管理新宠:Pinia实战指南
  • 网络编程:使用UDP实现数据帧的接收
  • AI安全研究滞后?清华专家团来支招
  • VMamba: Visual State Space Model论文笔记
  • “大数据应用场景”之隔壁老王(连载四)
  • Angular数据绑定机制
  • DOM的那些事
  • express如何解决request entity too large问题
  • GitUp, 你不可错过的秀外慧中的git工具
  • happypack两次报错的问题
  • java8 Stream Pipelines 浅析
  • JS数组方法汇总
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • October CMS - 快速入门 9 Images And Galleries
  • Terraform入门 - 1. 安装Terraform
  • win10下安装mysql5.7
  • 从0到1:PostCSS 插件开发最佳实践
  • 大整数乘法-表格法
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 类orAPI - 收藏集 - 掘金
  • 前端知识点整理(待续)
  • 前嗅ForeSpider采集配置界面介绍
  • 如何学习JavaEE,项目又该如何做?
  • 通过git安装npm私有模块
  • 智能合约Solidity教程-事件和日志(一)
  • Java总结 - String - 这篇请使劲喷我
  • linux 淘宝开源监控工具tsar
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • %@ page import=%的用法
  • (06)Hive——正则表达式
  • (26)4.7 字符函数和字符串函数
  • (C++)八皇后问题
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)PySpark3:SparkSQL编程
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (转)setTimeout 和 setInterval 的区别
  • . Flume面试题
  • .gitattributes 文件
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net framework4与其client profile版本的区别
  • .net web项目 调用webService