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

springboot统一异常处理

在 Spring Boot 中,可以通过自定义异常处理器来实现统一的异常处理。

  1. 创建自定义异常类

首先,创建一个自定义的异常类,继承自 RuntimeException 或其子类。这个异常类可以用来表示应用程序中的特定异常情况。

public class CustomException extends RuntimeException {public CustomException(String message) {super(message);}
}
  1. 创建全局异常处理器

然后,创建一个全局异常处理器,用于处理应用程序中发生的异常。可以使用 @ControllerAdvice 注解来标记这个类,并使用 @ExceptionHandler 注解来定义异常处理方法。

@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(CustomException.class)public ResponseEntity<String> handleCustomException(CustomException ex) {// 自定义异常的处理逻辑return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ex.getMessage());}@ExceptionHandler(Exception.class)public ResponseEntity<String> handleException(Exception ex) {// 通用异常的处理逻辑return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal Server Error");}
}

handleCustomException() 方法用于处理自定义异常 CustomException,并返回一个带有适当状态码和错误消息的 ResponseEntity 对象。handleException() 方法用于处理其他未处理的异常,返回一个带有 500 错误状态码和错误消息的 ResponseEntity 对象。

  1. 配置异常处理器

最后,在 Spring Boot 应用程序的配置类中,需要将全局异常处理器注册为一个 Bean。

@Configuration
public class AppConfig {@Beanpublic GlobalExceptionHandler globalExceptionHandler() {return new GlobalExceptionHandler();}
}

通过将全局异常处理器注册为一个 Bean,Spring Boot 将自动应用该处理器来处理应用程序中发生的异常。

当应用程序中抛出 CustomException 或其他未处理的异常时,全局异常处理器将捕获并处理它们,返回适当的错误响应。

相关文章:

  • Hana Studio打开BW失败
  • 基于Springboot的秒杀系统(有报告)。Javaee项目,springboot项目。
  • git常用命令小记
  • 软件工程导论学习资料
  • Web前端JS如何获取 Video/Audio 视音频声道(左右声道|多声道)、视音频轨道、音频流数据
  • Python----网络爬虫
  • 极米Z系列双十一销量超10万台 极米Z7X成轻薄投影首选
  • LeetCode [中等]岛屿数量
  • Day12 qt QMianWindow,资源文件,对话框,布局方式,常用ui控件
  • 统信UOS_麒麟KYLINOS配置apt及git内网代理
  • ThinkPHP6学生选课管理系统
  • jQuery选择器、操作DOM、事件处理机制、动画、ADJX操作知识点梳理
  • Pycharm配置jupyter使用notebook详细指南(可换行conda环节)
  • flutter实践:处理JSON数据
  • 知识点滴 - 什么是半透膜和渗透压
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 0x05 Python数据分析,Anaconda八斩刀
  • Angular 2 DI - IoC DI - 1
  • Javascript弹出层-初探
  • java多线程
  • laravel with 查询列表限制条数
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Linux gpio口使用方法
  • Mithril.js 入门介绍
  • Python学习笔记 字符串拼接
  • ReactNative开发常用的三方模块
  • storm drpc实例
  • 前端之Sass/Scss实战笔记
  • 学习使用ExpressJS 4.0中的新Router
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • "无招胜有招"nbsp;史上最全的互…
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (06)Hive——正则表达式
  • (30)数组元素和与数字和的绝对差
  • (ibm)Java 语言的 XPath API
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (学习日记)2024.01.19
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)EOS中账户、钱包和密钥的关系
  • (转)大型网站的系统架构
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET CORE Aws S3 使用
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .php文件都打不开,打不开php文件怎么办
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • .so文件(linux系统)
  • @ConfigurationProperties注解对数据的自动封装