SpringBoot 参数校验 @Valid 全局异常统一 400 Bad request ConstraintViolationException MethodArgumentNotValid...

在使用springboot 中的注解参数校验时遇到捕获不了异常 前台报400 Bad request错误的情况

原来是捕获的异常不对
有下面三种异常 注意都要捕获

ConstraintViolationException  //(方法参数校验异常)如实体类中的@Size注解配置和数据库中该字段的长度不统一等问题
MethodArgumentNotValidException //(Bean 校验异常)
BindException //(参数绑定异常)

所以方法这样写:

* 参数验证异常处理 * @param ex @ResponseBody @ExceptionHandler({BindException.class, MethodArgumentNotValidException.class, ConstraintViolationException.class}) public ResultData argumentValidationHandler(Exception ex) { String errorMsg = "参数验证错误"; BindingResult bindingResult = null; if (ex instanceof BindException) { BindException bindException = (BindException) ex; bindingResult = bindException.getBindingResult(); if (ex instanceof MethodArgumentNotValidException) { MethodArgumentNotValidException methodArgumentNotValidException = (MethodArgumentNotValidException) ex; bindingResult = methodArgumentNotValidException.getBindingResult(); if (ex instanceof ConstraintViolationException) { ConstraintViolationException constraintViolationException = (ConstraintViolationException) ex; errorMsg = constraintViolationException.getMessage(); if (bindingResult != null) { for (FieldError filedError : bindingResult.getFieldErrors()) { errorMsg = filedError.getDefaultMessage(); // errorFiled = filedError.getField();