关于validation抛出BindException异常处理
当给实体类添加注解@RequestBody时validation抛出的异常正常为MethodArgumentNotValidException和ConstraintViolationException,
但当遇到特殊情况无法添加@RequestBody时会抛出BindException,
处理方法:在全局异常类添加方法
@ExceptionHandler(BindException.class) public BaseResponse bindException(BindException ex) { try { // 拿到@NotNull,@NotBlank和 @NotEmpty等注解上的message值 String msg = Objects.requireNonNull(ex.getBindingResult().getFieldError()).getDefaultMessage(); if (StrUtil.isNotEmpty(msg)) { // 自定义状态返回 return BaseResponse.error() } } catch (Exception ignored) { } // 参数类型不匹配检验 StringBuilder msg = new StringBuilder(); List<FieldError> fieldErrors = ex.getFieldErrors(); fieldErrors.forEach((oe) -> msg.append("参数:[").append(oe.getObjectName()) .append(".").append(oe.getField()) .append("]的传入值:[").append(oe.getRejectedValue()).append("]与预期的字段类型不匹配.") ); return BaseResponse.error() }

浙公网安备 33010602011771号