@ControllerAdvice 是一个用于处理全局异常、全局数据绑定和全局数据预处理的注解。它能够被用于在一个类中集中处理多个控制器类所抛出的异常,从而使得开发者能够更加方便地处理错误。
下面是 @ControllerAdvice 的几个作用:
全局异常处理:使用 @ExceptionHandler 注解处理控制器类中抛出的指定异常,当该异常发生时,该方法会被自动调用。
全局数据绑定:使用 @InitBinder 注解来设置控制器类中数据绑定的规则。
全局数据预处理:使用 @ModelAttribute 注解来处理控制器类中公共的数据预处理逻辑。
下面是一个使用 @ControllerAdvice 处理全局异常的示例代码:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception ex) {
// 处理异常
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal Server Error");
}
}
在这个示例中,使用 @ExceptionHandler 注解指定了该方法可以处理所有类型的异常,当发生异常时,该方法会返回一个指定的响应对象。