MethodArgumentNotValidException

MethodArgumentNotValidException

我有一个如下的错误处理程序

@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一起处理其他一些异常。

07-27 13:47