Bootstrap

Springboot捕获全局异常:MethodArgumentNotValidException

1.控制器 方法上添加@Valid注解

@PostMapping("/update")
    @RequiresPermissions("user:update")
    public R update(@RequestBody @Valid UserEntity user) {
        userService.update(user);
        return R.ok();
    }

2.实体类

public class UserEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @TableId
    private Long userId;

    /**
     * 用户名
     */
    private String username;


    /**
     * 年龄
     */
    @Range(min = 18, max = 80, message = "年龄必须在 {min} 至 {max} 之间")
    private Integer age;
}

3.捕获全局异常类

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    @ResponseBody
    public R exceptionHandler2(MethodArgumentNotValidException e) {
        StringBuilder sb = new StringBuilder();
        List<ObjectError> allErrors = e.getBindingResult().getAllErrors();
        String message = allErrors.stream().map(s -> s.getDefaultMessage()).collect(Collectors.joining(";"));
        return R.error(message);
    }
}

效果

;