6 springboot全局异常处理器?

news/2025/4/2 13:02:39/文章来源:https://www.cnblogs.com/cbcwork/p/18803340

6 springboot全局异常处理器?

异常前提知识

  1. 异常仅在线程内部传播
  2. 主线程未捕获异常 → 程序终止
  3. 子线程未捕获异常 → 仅终止该子线程,不影响主线程和其他线程
  4. 非守护线程退出,jvm会立即停止,无论是否有守护线程。

解决异常处理的方式之一:

  • 自定义类封装响应的格式(响应码、响应描述、响应结果数据)
  • 创建全局异常处理器GlobalExceptionHandler类

自定义类封装响应的格式(响应码、响应描述、响应结果数据)

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErrorResponse {private int status;private String message;private Object details;private LocalDateTime timestamp = LocalDateTime.now();public ErrorResponse(int status, String message, Object details) {this.status = status;this.message = message;this.details = details;}
}

创建全局异常处理器GlobalExceptionHandler类

类加@RestControllerAdvice注解,方法加@ExceptionHandler(自定义异常.class )

创建全局异常处理器
java
@RestControllerAdvice
public class GlobalExceptionHandler {// 处理所有未捕获的异常@ExceptionHandler(Exception.class)public ResponseEntity<ErrorResponse> handleAllExceptions(Exception ex) {ErrorResponse error = new ErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(),"服务器内部错误",ex.getMessage());return new ResponseEntity<>(error, HttpStatus.INTERNAL_SERVER_ERROR);}// 处理自定义业务异常@ExceptionHandler(BusinessException.class)public ResponseEntity<ErrorResponse> handleBusinessException(BusinessException ex) {ErrorResponse error = new ErrorResponse(ex.getCode(),ex.getMessage(),ex.getDetails());return new ResponseEntity<>(error, ex.getStatus());}}

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

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

相关文章

使用 Ollama 本地模型与 Spring AI Alibaba 的强强结合,打造下一代 RAG 应用

使用 Ollama 本地模型与 Spring AI Alibaba 的强强结合,打造下一代 RAG 应用作者:牧生 Spring AI Alibaba RAG Example 示例项目源码地址: https://github.com/springaialibaba/spring-ai-alibaba-examples/tree/main/spring-ai-alibaba-rag-example RAG 应用架构概述 1.1 核…

【2025】简易实用知网爬虫,过程加代码

知网是中国最大的学术文献数据库,包含了大量期刊、会议论文、学位论文和报纸等学术资源。尽管知网提供了强大的在线搜索功能,但用户有时需要通过程序自动化地获取大量文章信息。这时,我们会使用爬虫技术来帮助完成这项任务。 工具选择和前提条件 本次爬取工作,我们选择了 P…

RabbitMQ进阶--分布式事务案例

本节主要讲述一个案例,是使用rabbitmq实现分布式事务,本章从分布式事务以sping的声明式事务,转而到rabbitMQ的分布式事务,一下环境需要的依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp<…

[Rust] 首次接触Rust

最近听闻Rust已经逐步进入了Linux Kernel,而且一个很好用的软件yazi也是rust开发的,所以想了解一下rust的开发和使用。基本操作 官网 官网:快速配置 Rust 开发环境并编写一个小应用! 官方练习环境:Rust演练场 官方教材:学习Rust 下载 curl --proto =https --tlsv1.2 -sSf…

记录给linux/ubuntu的4T新硬盘分区、格式化并挂载

之前给服务器挂载硬盘最大也就是1.2T的,今天客户的一个服务器考虑到未来用户量上传文件比较大,就搞了个4T的盘 一、查询磁盘信息 由于是新盘,df -h 是查不到的然后通过 lsblk 命令就可以看到了二、尝试分区 然后就开始熟练的先分区,结果报错了The size of this disk is 4 …

智能运维,由你定义:SAE自定义日志与监控解决方案

通过引入 Sidecar 容器的技术,SAE 为用户提供了更强大的自定义日志与监控解决方案,帮助用户轻松实现日志采集、监控指标收集等功能。未来,SAE 将会支持 istio 多租场景,帮助用户更高效地部署和管理服务网格。作者:久氢、丛霄、章进 背景 SAE【1】(Serverless 应用引擎)是…

【THM】Alfred 阿尔弗雷德

【THM】 Alfred 阿尔弗雷德 Initial Access 初始访问在这个房间,我们将学习如何利用广泛使用的自动化服务器(Jenkins - 此工具用于创建持续集成/持续开发管道,允许开发者在对其代码进行更改后自动部署代码)上的常见配置错误。之后,我们将使用一种有趣的权限提升方法来获取…

从零开始编译安装Nginx:详细步骤与实战配置(附避坑指南)——基于CentOS 7的保姆级教程

一、为什么需要创建专用Nginx用户? 在Linux系统中,为服务创建独立的运行用户是安全最佳实践。Nginx默认以nobody用户运行,但通过创建专用用户nginx,可以限制其权限,防止潜在的安全漏洞影响系统其他部分。 操作步骤: # 创建不可登录的nginx用户(-M不创建家目录,-s指定不…

3.31 格林公式及其应用

1.1 类比 一元函数的积分可以通过两个边界的函数表示 二元函数的积分就可以通过曲线的积分表示1.2 例题例题2(不完全封闭的写法

ArkTs的@Watch状态监听

@Watch装饰器:监听并捕捉变量变化@Watch用于监听状态变量的变化,当状态变量变化时,@Watch的回调方法将被调用。@Watch在ArkUI框架内部判断数值有无更新使用的是严格相等(===),监听并捕捉变量变化。 前端同学以Vue中的Watch监听为嵌入点更好理解。 装饰器说明装饰器参数: …

@Resource 和 @Autowired 的区别

@Autowired 和 @Resource 都用于在 Spring 中进行依赖注入,但在来源、注入方式、支持的参数和用法上存在一些差异。​1、来源不同@Autowired:​Spring 自身提供的注解,位于 org.springframework.beans.factory.annotation 包中。​ @Resource:​Java标准中的注解,位于 jav…

harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)

大家好!我是黑臂麒麟,一位6年的前端;if youre change the world, youre workingon important things. youre excited to get up in the norning.一、常用基础组件 1.基础组件 简单列举常用的及含义,掌握了以下按钮可以解决日常简单场景需求。其他在使用时查询ArkTS的API文…