关于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() }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通