LambdaQueryWrapper<Info> QueryWrapper = new LambdaQueryWrapper<>();
        QueryWrapper.eq(Info::getId, id);
        Long count = InfoMapper.selectCount(QueryWrapper);
        if (count > 0) {
            throw new LeaseException(ResultCodeEnum.PARAM_ERROR);
        }

在讲解在增加自定义逻辑值之前 我们先引入业务场景

这是一个代码片段 通过id查询数量 如果数量大于0 则抛出异常

这个业务场景可以存在于计数规则 如果返回大于0的值 就可以自定义异常

在全局异常类中定义一个具体异常(具体异常的优先级在发生异常时要高于Exception异常)

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Result error(Exception e){
        e.printStackTrace();
        return Result.fail();
    }
    
    @ExceptionHandler(LeaseException.class)
    @ResponseBody
    public Result error(LeaseException e){
        e.printStackTrace();
        return Result.fail(e.getCode(), e.getMessage());
    }
}
@Data
public class LeaseException extends RuntimeException {

    //异常状态码
    private Integer code;
    /**
     * 通过状态码和错误消息创建异常对象
     * @param message
     * @param code
     */
    public LeaseException(String message, Integer code) {
        super(message);
        this.code = code;
    }

    /**
     * 根据响应结果枚举对象创建异常对象
     * @param resultCodeEnum
     */
    public LeaseException(ResultCodeEnum resultCodeEnum) {
        super(resultCodeEnum.getMessage());
        this.code = resultCodeEnum.getCode();
    }

    @Override
    public String toString() {
        return "LeaseException{" +
                "code=" + code +
                ", message=" + this.getMessage() +
                '}';
    }
}
    public static <T> Result<T> fail(Integer code, String message) {
        Result<T> result = build(null);
        result.setCode(code);
        result.setMessage(message);
        return result;
    }