@RestControllerAdvice
是 Spring Framework 中用于定义全局异常处理的注解。它并不是自动让 Controller 抛出异常,而是提供了一种机制来统一处理由 Controller 层抛出的异常。使用 @RestControllerAdvice
可以让你集中处理异常,而不是在每个 Controller 或者方法中单独处理它们。
当你在一个类上使用了 @RestControllerAdvice
注解,Spring 会将这个类视为一个特殊的组件,用于捕获并处理来自所有 @RestController
的异常。通常情况下,你会在这个类中使用 @ExceptionHandler
注解来指定如何处理特定类型的异常。
例如:
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(CustomException.class)
public ResponseEntity<?> handleCustomException(CustomException ex) {
// 创建错误响应实体
ErrorResponse errorResponse = new ErrorResponse(ex.getMessage());
// 返回带有状态码和错误信息的响应实体
return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);
}
}
在这个例子中,任何由 @RestController
抛出的 CustomException
类型的异常都会被 GlobalExceptionHandler
类中的 handleCustomException
方法处理。