来处理控制器类抛出的所有异常。@ControllerAdvice配合@ExceptionHandler实
时间: 2024-10-12 09:16:15 浏览: 25
在Spring MVC框架中,`@ControllerAdvice`是一个注解,用于创建一个全局的处理器类,专门负责处理那些来自多个控制器方法的异常。当你在类上使用`@ControllerAdvice`,并且在其方法上使用`@ExceptionHandler`,你可以集中管理所有类型的特定异常,例如`@ExceptionHandler(Exception.class)`可以捕获并处理所有未被其他特定异常处理器处理的运行时异常。
举个例子:
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = {Exception.class})
public ResponseEntity<?> handleGlobalException(Exception e) {
// 这里你可以获取错误信息,封装成ResponseEntity返回给客户端,如json格式
Map<String, Object> errorMap = new HashMap<>();
errorMap.put("message", "发生未知错误");
errorMap.put("code", 500);
return new ResponseEntity<>(errorMap, HttpStatus.INTERNAL_SERVER_ERROR);
}
// 可能还有其他针对特定异常的处理器方法,比如@ExceptionHandler(NullPointerException.class)
}
```
这样,无论哪个控制器方法抛出异常,只要符合你在`@ExceptionHandler`中指定的异常类型,就会自动触发相应的处理方法。
阅读全文