spring-boot-starter-validation 有几种异常?异常捕获怎么写
spring-boot-starter-validation 有以下几种异常:
- ConstraintViolationException:当验证失败时抛出,包含所有验证失败的信息。
- MethodArgumentNotValidException:当@Validated注解的方法参数验证失败时抛出,包含所有验证失败的信息。
- BindException:当表单数据绑定失败时抛出,包含所有绑定失败的信息。
在Spring Boot中,可以使用@ControllerAdvice注解来定义全局异常处理器,捕获这些异常并进行处理。例如:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ConstraintViolationException.class)
public ResponseEntity<String> handleConstraintViolationException(ConstraintViolationException ex) {
// 处理 ConstraintViolationException 异常
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("请求参数验证失败:" + ex.getMessage());
}
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<String> handleMethodArgumentNotValidException(MethodArgumentNotValidException ex) {
// 处理 MethodArgumentNotValidException 异常
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("请求参数验证失败:" + ex.getMessage());
}
@ExceptionHandler(BindException.class)
public ResponseEntity<String> handleBindException(BindException ex) {
// 处理 BindException 异常
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("请求参数绑定失败:" + ex.getMessage());
}
}
上面的代码中,我们定义了一个全局异常处理器,捕获了ConstraintViolationException、MethodArgumentNotValidException和BindException三种异常,并分别进行处理。在处理过程中,我们可以根据具体的业务需求,返回不同的HTTP状态码和错误信息。
原文地址: https://www.cveoy.top/t/topic/bonH 著作权归作者所有。请勿转载和采集!