接下来,创建一个全局异常处理器来处理校验失败的情况:
时间: 2023-07-21 17:08:19 浏览: 105
全局异常处理的实现
当您在接口方法中使用`@Validated`注解并将请求参数绑定到对象上时,如果参数校验失败,Spring会抛出`MethodArgumentNotValidException`异常。您可以通过创建一个全局异常处理器来捕获该异常并返回相应的错误信息。以下是一个示例代码:
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<?> handleValidationExceptions(MethodArgumentNotValidException ex) {
List<String> errors = ex.getBindingResult().getAllErrors().stream()
.map(DefaultMessageSourceResolvable::getDefaultMessage)
.collect(Collectors.toList());
return ResponseEntity.badRequest().body(errors);
}
}
```
在上述示例中,我们使用`@ControllerAdvice`注解来标记全局异常处理器。`@ExceptionHandler(MethodArgumentNotValidException.class)`注解指定了要处理的异常类型为`MethodArgumentNotValidException`,这是当参数校验失败时抛出的异常。
在`handleValidationExceptions`方法中,我们通过`ex.getBindingResult().getAllErrors()`获取到所有的校验错误信息,然后使用流操作将错误信息提取出来存储在一个列表中。
最后,我们使用`ResponseEntity.badRequest().body(errors)`来构建一个响应实体,将错误信息作为响应体返回。
这样,当请求参数校验失败时,将会返回一个包含错误信息的响应。您可以根据实际需求自定义全局异常处理器,并对不同类型的异常进行不同的处理。
阅读全文