SpringBoot 如何进行 统一异常处理

在Spring Boot中,可以通过自定义异常处理器来实现统一异常处理。异常处理器能够捕获应用程序中抛出的各种异常,并提供相应的错误处理和响应。

Spring Boot提供了@ControllerAdvice注解,它可以将一个类标记为全局异常处理器。全局异常处理器能够拦截所有Controller层抛出的异常,提供统一的处理逻辑。

下面是实现统一异常处理的详细步骤:

一、创建自定义异常类

首先,你需要根据自己的需求创建自定义的异常类。可以继承现有的异常类,比如RuntimeException,或者创建自己的异常类。自定义异常类应该包含错误码和错误消息等必要的信息。

复制代码
public class CustomException extends RuntimeException {
    private int errorCode;
    private String errorMessage;
    
    // 构造方法
    
    // getter和setter方法
}

二、创建全局异常处理器类

使用@ControllerAdvice注解来标记全局异常处理器类。然后,在类中定义异常处理方法,用@ExceptionHandler注解来指定需要处理的异常类型。

复制代码
@ControllerAdvice
public class GlobalExceptionHandler {
    
    @ExceptionHandler(CustomException.class)
    public ResponseEntity<ErrorResponse> handleCustomException(CustomException ex) {
        ErrorResponse errorResponse = new ErrorResponse(ex.getErrorCode(), ex.getErrorMessage());
        return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
    }
    
    // 其他异常处理方法
    
    @ExceptionHandler(Exception.class)
    public ResponseEntity<ErrorResponse> handleException(Exception ex) {
        ErrorResponse errorResponse = new ErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), ex.getMessage());
        return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

在上述代码中,handleCustomException方法用于处理CustomException异常,handleException方法用于处理其他未被明确定义处理方法的异常。这些异常处理方法可以返回自定义的错误响应对象。

三、创建错误响应类

创建一个错误响应类,用于封装错误码和错误消息等信息。

复制代码
public class ErrorResponse {
    private int errorCode;
    private String errorMessage;
    
    // 构造方法
    
    // getter和setter方法
}

通过以上步骤,你就完成了统一异常处理的实现。当应用程序中抛出异常时,Spring Boot会自动调用对应的异常处理方法,并根据处理方法返回的错误响应进行响应。

需要注意的是,在实际应用中,你可以根据业务需求自定义更多的异常类和异常处理方法,以处理不同类型的异常情况。此外,你还可以添加其他的注解或逻辑来扩展和优化全局异常处理的功能。

四、小结

相关推荐
wgego21 分钟前
基础的反序列化一些总结(php和java)
java·开发语言·笔记
机建狂魔1 小时前
Codex 接入第三方模型 API 实战:以 Mimo 为例
java·服务器·数据库·ai·ai编程·codex
万少1 小时前
用 TraeWork 给小孩做一个家庭工作台
前端·人工智能·后端
2601_963870181 小时前
【计算机毕业设计】基于Vue + Spring Boot的社区养老服务管理平台设计与实现
spring boot·后端·课程设计
山峰哥1 小时前
数据库工程与SQL调优:从慢查询到秒级响应的实战之路
java·开发语言·数据库·sql·深度优先·启发式算法
乐观的Terry2 小时前
11、发布系统-用户认证与权限体系
java·spring boot·spring·spring cloud·mybatis
前端开发张小七2 小时前
Java 学习笔记 · 第二课:面向对象核心(封装、继承、多态)及接口与异常
java·后端·程序员
颜进强2 小时前
Calude Code - 23 用 MCP 把 Jenkins 变成 AI 队友:一次对话完成自动化发布
前端·后端
wangjialelele2 小时前
Selenium4 + Java Web自动化测试入门指南:从环境搭建到常用操作详解
java·开发语言·前端·测试工具·自动化
Awna2 小时前
Golang 大小写可见性规范
开发语言·后端·golang