@RestControllerAdvice 详细
时间: 2023-10-27 18:06:38 浏览: 130
`@RestControllerAdvice` 是 Spring Framework 4.3 版本引入的一个注解,它可以用来定义一个全局的异常处理器。类似于 `@ControllerAdvice`,但是它的返回值会直接写入 HTTP 响应体中,而不是通过视图解析器来解析视图。
使用 `@RestControllerAdvice` 可以让 Spring Boot 应用在出现异常时返回 JSON 格式的数据,而不是 HTML 格式的错误页面,这对于前后端分离的项目非常有用。
具体使用方法:
1. 创建一个类并加上 `@RestControllerAdvice` 注解。
```java
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = Exception.class)
public Map<String, Object> handleException(Exception e) {
Map<String, Object> result = new HashMap<>();
result.put("code", "500");
result.put("msg", e.getMessage());
return result;
}
}
```
2. 在 `@ExceptionHandler` 注解中指定需要处理的异常类型,并在方法中编写异常处理逻辑。上面的代码中,我们处理了所有的异常,并将异常信息放入一个 Map 中返回。
如果需要处理多个异常类型,可以像下面这样编写:
```java
@ExceptionHandler({NullPointerException.class, ArithmeticException.class})
public Map<String, Object> handleException(Exception e) {
Map<String, Object> result = new HashMap<>();
result.put("code", "500");
result.put("msg", e.getMessage());
return result;
}
```
3. 在应用中发生异常时,`GlobalExceptionHandler` 类中对应的方法就会被调用,返回 JSON 格式的数据。
需要注意的是,`@RestControllerAdvice` 只能处理控制器抛出的异常,无法处理其他组件抛出的异常,比如过滤器、拦截器等。如果需要处理这些异常,可以使用 `@ExceptionHandler` 注解。
阅读全文