@ControllerAdvice和@ExceptionHandler怎么进行异常处理
时间: 2024-01-14 14:12:36 浏览: 80
基于ControllerAdvice+ErrorController+Filter,Springboot全局化处理异常信息(自定义error页面或json返回)
5星 · 资源好评率100%
@ControllerAdvice 是一个注解,用于定义全局异常处理器类。我们可以在该类中定义多个 @ExceptionHandler 注解方法来处理不同类型的异常。当系统中出现异常时,会根据异常类型找到对应的 @ExceptionHandler 方法进行处理。
具体的步骤如下:
1. 创建一个类,并用 @ControllerAdvice 注解标记。
2. 在该类中定义多个方法,每个方法上使用 @ExceptionHandler 注解,并传入对应的异常类型作为参数。
3. 在方法中编写具体的异常处理逻辑。
例如,我们可以创建一个全局异常处理器类 GlobalExceptionHandler:
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
// 处理 Exception 类型的异常
// 返回自定义的错误信息
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal Server Error");
}
@ExceptionHandler(RuntimeException.class)
public ResponseEntity<String> handleRuntimeException(RuntimeException e) {
// 处理 RuntimeException 类型的异常
// 返回自定义的错误信息
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Bad Request");
}
// 可以添加更多的异常处理方法...
}
```
在上述例子中,我们定义了两个异常处理方法,分别处理 Exception 类型和 RuntimeException 类型的异常。当系统中抛出对应的异常时,会调用相应的处理方法并返回自定义的错误信息。
这样,在整个系统中任何地方出现的对应类型的异常都会被统一处理,提高了代码的可维护性和错误处理的一致性。
阅读全文