我有一个如下的错误处理程序
@ExceptionHandler(value = {MethodArgumentNotValidException.class})
public ResponseEntity<Error> methodArgumentNotValidHandler(final MethodArgumentNotValidException e) {
final List<String> errors = e.getBindingResult().getFieldErrors().stream()
.map(error -> error.getField() + ": " + error.getDefaultMessage())
.collect(Collectors.toList());
e.getBindingResult().getGlobalErrors().stream()
.forEach(error -> errors.add(error.getObjectName() + ": " + error.getDefaultMessage()));
return new ResponseEntity<>(new Error(HttpStatus.UNPROCESSABLE_ENTITY, errors), HttpStatus.UNPROCESSABLE_ENTITY);
}
我在想,虽然BindingResult或.getFieldErrors的FieldErrors还是getGlobalErrors的GlobalErrors是否曾经可能为null,因为那将是非常糟糕的
最佳答案
不会的在集成测试中为此编写失败案例应该可以清除您的疑问。
为MethodArgumentNotValidException
调用异常处理程序。因此,它应该有一些字段错误。
但是对于更简洁的代码,我建议检查hasFieldErrors()
异常处理程序是否与MethodArgumentNotValidException
一起处理其他一些异常。