spring统一异常处理

异常处理类

添加BaseExceptionHandler类,然后根据具体异常类型处理

@ControllerAdvice
@ResponseBody
public class BaseExceptionHandler {
    /**
     * 全局异常捕捉处理
     *
     * @param e
     * @return
     */
    @ResponseBody
    @ExceptionHandler(value = Exception.class)
    public Result errorHandler(Exception e) {
        return Result.fail(e.toString());
    }

    /**
     * @valid 参数校验异常处理
     * @param e
     * @return
     */
    @ExceptionHandler(value = BindException.class)
    public Result bindHandler(BindException e) {
        ObjectError error = e.getAllErrors().get(0);
        return Result.fail(error.getDefaultMessage());
    }

    /**
     * spring断言异常处理
     * @param e
     * @return
     */
    @ExceptionHandler(value = IllegalArgumentException.class)
    public Result illegalArgumentHandler(IllegalArgumentException e) {
        return Result.fail(e.getMessage());
    }
}
入参校验及异常处理

添加依赖

 
           org.hibernate
           hibernate-validator
           6.1.5.Final
       

入参对象前添加@Valid

 @RequestMapping("login")
    public Result login(@Valid UserQuery userQuery){
        return Result.succeed(userService.login(userQuery));
    }

在字段上添加注解

@NotBlank(message = "用户名不能为空")
    @Length(message = "用户名不能超过个 {max} 字符", max = 10)
    private String username;

该方式抛出的异常为org.springframework.validation.BindException

spring断言校验及异常处理

 Assert.notNull(userDto.getAge(),"年龄不能为空");

该方式抛出的异常为 java.lang.IllegalArgumentException

你可能感兴趣的:(spring统一异常处理)