RestControllerAdvice注解与全局异常处理统一返回固定格式实体类


Cx330
原创
发布时间: 2025-10-19 22:12:08 | 阅读数 0收藏数 0评论数 0
封面
本文介绍了如何在 Spring Boot 项目中使用 @RestControllerAdvice 注解实现全局异常处理。通过该注解,可以在应用层集中捕获控制器抛出的各种异常,并使用 @ExceptionHandler 方法对不同类型的异常进行处理。文章重点讲解了如何定义统一的响应实体类,使所有接口在发生异常时返回固定格式的 JSON,包括状态码、错误信息和时间戳等字段,从而提升接口的一致性和可维护性。同时,结合实际示例,说明了如何在全局异常处理器中灵活处理自定义异常、系统异常以及参数校验异常,使应用的错误处理更加规范和易于扩展。
1

问题发现

如图所示 我声明了一个运行时的异常 但是他返回给我们前端的信息是跟我们项目规定的格式是不一样的,这样的话项目后端异常了我们前端就很不方便进行响应和处理


所以本文就来教大家做一个全局的异常处理

2

注解介绍

@RestControllerAdvice 是 Spring 框架中用于全局控制器增强的注解。它的作用是让开发者可以在一个地方集中处理所有控制器中可能出现的异常或通用逻辑。使用它之后,所有带有 @Controller 或 @RestController 的类抛出的异常,都会被这个增强类捕获并处理。它默认返回 JSON 格式的响应结果,因此非常适合在 REST 接口中使用。简单来说,它让整个项目的异常处理变得集中、统一、可维护。



@ExceptionHandler 是一个方法级别的注解,用来指定当某种类型的异常出现时,由哪个方法来处理。它通常写在被 @RestControllerAdvice 标注的类中,用来定义具体的异常对应的处理逻辑。一个方法可以对应一个或多个异常类型,当控制器中抛出这些异常时,Spring 会自动调用对应的处理方法。

两者的关系可以理解为:

  1. @RestControllerAdvice 定义了“谁来负责统一处理”,
  2. 而 @ExceptionHandler 定义了“具体怎么处理哪类错误”。
3

返回字符串案例


把如下代码添加到config层 然后效果如图 这个返回指定异常的效果 如果要返回所有异常就改成Exception

@RestControllerAdvice
public class GlobalExceptionHandler {

@ExceptionHandler(RuntimeException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public String exception(Exception e) {
return e.getMessage();
}
}


4

返回对象并所有异常触发

返回实体类如下

public class ReturnData{
private Integer code;
private String message;

public Integer getCode() {
return code;
}

public void setCode(Integer code) {
this.code = code;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public ReturnData(int code, String message) {
this.code = code;
this.message = message;
}

public ReturnData() {
}
}




全局异常配置如下

@RestControllerAdvice
public class GlobalExceptionHandler {

@ExceptionHandler(Exception.class)
public ReturnData exception(Exception e) {
return new ReturnData(HttpStatus.INTERNAL_SERVER_ERROR.value(),e.getMessage());
}
}



效果如图所示

阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报