自定义断言工具

1、自定义异常

package com.forezp.aspect;

import lombok.Data;
import lombok.EqualsAndHashCode;


/**
 * 统一返回异常

 */
@Data
@EqualsAndHashCode(callSuper = true)
public class BusinessException extends RuntimeException {
    /**
    * 
    */
   private static final long serialVersionUID = 1777331244357341577L;
   private String code;

    /**
     * 继承exception,加入错误状态值
     *
     * @param codeEnum
     */
    public BusinessException(ResultCodeEnum codeEnum) {
        super(codeEnum.getMessage());
        this.code = codeEnum.getCode();
    }

    /**
     * 自定义错误信息
     *
     * @param message
     * @param code
     */
    public BusinessException(String message, String code) {
        super(message);
        this.code = code;
    }

    /**
     * 业务异常
     *
     * @param message
     */
    public BusinessException(String message) {
        super(message);
        this.code = ResultCodeEnum.BUSINESS_ERROR.getCode();

    }
}
异常统一处理
package com.forezp.aspect;



import lombok.extern.slf4j.Slf4j;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.NoHandlerFoundException;


/**
 *  异常统一处理
 *
 */
@RestControllerAdvice
@Slf4j
public class ExceptionUnifiedHandler {

    /**
     * RestDescribeException 异常处理
     *
     * @param e
     * @return
     */
    @ExceptionHandler(value = BusinessException.class)
    public ResponseData doException(BusinessException e) {
        e.printStackTrace();
        log.info("异常:",e);
        return ResultUtils.error(e.getCode(), e.getMessage());
    }

    /**
     * NoHandlerFoundException 异常处理
     *
     * @param e
     * @return
     */
    @ExceptionHandler(value = NoHandlerFoundException.class)
    public ResponseData doException(NoHandlerFoundException e) {
        e.printStackTrace();
        log.info("异常:",e);
        return ResultUtils.error(ResultCodeEnum.NO_HANDLER_FOUND);
    }

    /**
     * HttpRequestMethodNotSupportedException 异常处理
     *
     * @param e
     * @return
     */
    @ExceptionHandler(value = HttpRequestMethodNotSupportedException.class)
    public ResponseData doException(HttpRequestMethodNotSupportedException e) {
        e.printStackTrace();
        log.info("异常:",e);
        return ResultUtils.error(ResultCodeEnum.NO_HANDLER_FOUND);
    }


    /**
     * Exception 异常处理
     *
     * @param e
     * @return
     */
    @ExceptionHandler(value = Exception.class)
    public ResponseData doException(Exception e) {
        e.printStackTrace();
        log.error("异常:",e);;
        return ResultUtils.error(ResultCodeEnum.UNKNOW_ERROR);
    }

}

编写ResultUtils
package com.forezp.aspect;


/**
 */
public class ResultUtils {


    /**
     * 提供给部分不需要出參的接口
     *
     * @return
     */
    public static ResponseData success() {
        return success(null);
    }

    /**
     * 返回成功,传入返回体具体出參
     *
     * @param message
     * @param object
     * @return
     */
    public static <T> ResponseData success(String message, T object) {
        return generalMethod(ResultCodeEnum.SUCCESS.getCode(), message, object);
    }

    /**
     * 返回成功,传入返回体具体出參
     *
     * @param object
     * @return
     */
    public static <T> ResponseData success(T object) {
        return generalMethod(ResultCodeEnum.SUCCESS.getCode(), ResultCodeEnum.SUCCESS.getMessage(), object);
    }

    /**
     * 自定义错误信息
     *
     * @param message
     * @return
     */
    public static ResponseData error( String message) {
        return generalMethod(ResultCodeEnum.BUSINESS_ERROR.getCode(), message, null);
    }

    /**
     * 自定义错误信息
     *
     * @param message
     * @return
     */
    public static <T> ResponseData error( String message, T object) {
        return generalMethod(ResultCodeEnum.BUSINESS_ERROR.getCode(), message, object);
    }

    /**
     * 自定义错误信息
     *
     * @param code
     * @param message
     * @return
     */
    public static ResponseData error(String code, String message) {
        return generalMethod(code, message, null);
    }
    
    /**
     * 自定义错误信息及回传信息
     *
     * @param code
     * @param message
     * @param object
     * @param <T>
     * @return
     */
    public static <T> ResponseData error(String code, String message, T object) {
        return generalMethod(code, message, object);
    }

    /**
     * 返回异常信息,在已知的范围内
     *
     * @param codeEnum
     * @return
     */
    public static ResponseData error(ResultCodeEnum codeEnum) {
        return generalMethod(codeEnum.getCode(), codeEnum.getMessage(), null);
    }

    /**
     * 返回异常信息,在已知的范围内
     *
     * @param codeEnum
     * @return
     */
    public static <T> ResponseData error(ResultCodeEnum codeEnum, T object) {
        return generalMethod(codeEnum.getCode(), codeEnum.getMessage(), object);
    }

    /**
     * 通用方法
     *
     * @param code
     * @param message
     * @param object
     * @param <T>
     * @return
     */
    private static <T> ResponseData generalMethod(String code, String message, T object) {
       ResponseData<T> result = new ResponseData<T>();
       result.setResult(code.equals(ResultCodeEnum.SUCCESS.getCode()) ? 1: 0);
        result.setCode(code);
        result.setMsg(message);
        result.setData(object);
        return result;
    }

}

 

 

 

2、编写常用返回code枚举

package com.forezp.aspect;

/**
 * 常用返回code枚举
 *
 */
public enum ResultCodeEnum {
    
   SUCCESS("200", "成功"),
   DATA_ERROR("600", "数据异常"),
   NO_HANDLER_FOUND("404", "404"),
   BUSINESS_ERROR("-100", "服务器错误"),
   REMOTE_INTERFACE_ERROR("700", "接口调用异常"),
   DECRYPT_ERROR("702", "解密失败"),
   ENCRYPT_ERROR("701", "加密失败"),
   UNKNOW_ERROR("500", "未知错误"),
   TMC1001("1001", "参数传递有误"),
   TMC1002("1002", "查无航班"),
   TMC1003("1003", "数据过期"),
   TMC1004("1004", "接口验价失败,该航班的没有有效价格"),
   TMC1005("1005", "接口占位失败,该航班舱位已售完"),
   TMC1006("1006", "订单状态无效,确认失败"),
   TMC1007("1007", "客人支付金额与实际订单金额不符"),
   TMC1008("1008", "当前订单状态不允许取消"),
   TMC1009("1009", "客票规定不允许改期"),
   TMC1010("1010", "客票规定不允许退票"),
   TMC1011("1011", "订单当天状态不允许"),
   TMC1012("1012", "请求条件校验不通过"),
   TMC1099("1099", "系统故障");
   
    private String code;
    private String message;

    ResultCodeEnum(String code, String message) {
        this.code = code;
        this.message = message;
    }

    public String getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}

 

3、编写断言工具

package com.forezp.aspect;


import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.StringUtils;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Objects;


/**
 * 异常错误抛出工具
 *
 */
public class AssertionUtils {

    /**
     * 对象为空时
     *
     * @param obj
     * @param message
     */
    public static void isNull(Object obj, String message) {
        if (Objects.isNull(obj)) {
            message(message);
        }
    }


    /**
     * 对象不为空时
     *
     * @param obj
     * @param message
     */
    public static void isNotNull(Object obj, String message) {
        if (obj!=null) {
            message(message);
        }
    }


    /**
     * 对象为空时
     *
     * @param obj
     * @param codeEnum
     */
    public static void isNull(Object obj, ResultCodeEnum codeEnum) {
        if (Objects.isNull(obj)) {
            message(codeEnum);
        }
    }

    /**
     * 对象为空时
     *
     * @param obj
     */
    public static void isNull(Object obj) {
        if (Objects.isNull(obj)) {
            message();
        }
    }

    /**
     * 对象为空时
     *
     * @param obj
     * @param message
     */
    public static void nonNull(Object obj, String message) {
        if (Objects.nonNull(obj)) {
            message(message);
        }
    }

    /**
     * 集合为空时
     *
     * @param list
     * @param message
     */
    public static void isEmpty(List list, String message) {
        if (CollectionUtils.isEmpty(list)) {
            message(message);
        }
    }

    /**
     * 对象不为空时
     *
     * @param obj
     * @param codeEnum
     */
    public static void nonNull(Object obj, ResultCodeEnum codeEnum) {
        if (Objects.nonNull(obj)) {
            message(codeEnum);
        }
    }

    /**
     * 对象不为空时
     *
     * @param obj
     */
    public static void nonNull(Object obj) {
        if (Objects.nonNull(obj)) {
            message();
        }
    }


    /**
     * 对象相等时
     *
     * @param val1
     * @param val2
     * @param message
     */
    public static void equals(Object val1, Object val2, String message) {
        if (Objects.equals(val1, val2)) {
            message(message);
        }
    }

    /**
     * 对象相等时
     *
     * @param val1
     * @param val2
     * @param codeEnum
     */
    public static void equals(Object val1, Object val2, ResultCodeEnum codeEnum) {
        if (Objects.equals(val1, val2)) {
            message(codeEnum);
        }
    }

    /**
     * 对象相等时
     *
     * @param val1
     * @param val2
     */
    public static void equals(Object val1, Object val2) {
        if (Objects.equals(val1, val2)) {
            message();
        }
    }

    /**
     * 对象不相等时
     *
     * @param val1
     * @param val2
     * @param message
     */
    public static void unequals(Object val1, Object val2, String message) {
        if (!Objects.equals(val1, val2)) {
            message(message);
        }
    }

    /**
     * 对象不相等时
     *
     * @param val1
     * @param val2
     * @param codeEnum
     */
    public static void unequals(Object val1, Object val2, ResultCodeEnum codeEnum) {
        if (!Objects.equals(val1, val2)) {
            message(codeEnum);
        }
    }

    /**
     * 对象不相等时
     *
     * @param val1
     * @param val2
     */
    public static void unequals(Object val1, Object val2) {
        if (!Objects.equals(val1, val2)) {
            message();
        }
    }

    /**
     * 字符串相等时
     *
     * @param val1
     * @param val2
     * @param message
     */
    public static void equals(String val1, String val2, String message) {
        if (StringUtils.equals(val1, val2)) {
            message(message);
        }
    }

    /**
     * 字符串相等时
     *
     * @param val1
     * @param val2
     * @param codeEnum
     */
    public static void equals(String val1, String val2, ResultCodeEnum codeEnum) {
        if (StringUtils.equals(val1, val2)) {
            message(codeEnum);
        }
    }

    /**
     * 字符串相等时
     *
     * @param val1
     * @param val2
     */
    public static void equals(String val1, String val2) {
        if (StringUtils.equals(val1, val2)) {
            message();
        }
    }

    /**
     * 字符串不相等时
     *
     * @param val1
     * @param val2
     * @param message
     */
    public static void unequals(String val1, String val2, String message) {
        if (!StringUtils.equals(val1, val2)) {
            message(message);
        }
    }

    /**
     * 字符串不相等时
     *
     * @param val1
     * @param val2
     * @param codeEnum
     */
    public static void unequals(String val1, String val2, ResultCodeEnum codeEnum) {
        if (!StringUtils.equals(val1, val2)) {
            message(codeEnum);
        }
    }

    /**
     * 字符串不相等时
     *
     * @param val1
     * @param val2
     */
    public static void unequals(String val1, String val2) {
        if (!StringUtils.equals(val1, val2)) {
            message();
        }
    }


    /**
     * 集合不为空时
     *
     * @param coll
     * @param message
     */
    public static void isNotEmpty(Collection coll, String message) {
        if (CollectionUtils.isNotEmpty(coll)) {
            message(message);
        }
    }

    /**
     * 集合不为空时
     *
     * @param coll
     * @param codeEnum
     */
    public static void isNotEmpty(Collection coll, ResultCodeEnum codeEnum) {
        if (CollectionUtils.isNotEmpty(coll)) {
            message(codeEnum);
        }
    }

    /**
     * 集合不为空时
     *
     * @param coll
     */
    public static void isNotEmpty(Collection coll) {
        if (CollectionUtils.isNotEmpty(coll)) {
            message();
        }
    }

    /**
     * 集合为空时
     *
     * @param coll
     * @param message
     */
    public static void isEmpty(Collection coll, String message) {
        if (CollectionUtils.isEmpty(coll)) {
            message(message);
        }
    }

    /**
     * 集合为空时
     *
     * @param coll
     * @param codeEnum
     */
    public static void isEmpty(Collection coll, ResultCodeEnum codeEnum) {
        if (CollectionUtils.isEmpty(coll)) {
            message(codeEnum);
        }
    }

    /**
     * int为空时
     * @param coll
     * @param message
     */
    public static void isIntBlank(Integer coll, String message) {
        if (coll==null) {
            message(message);
        }
    }

    /**
     * 集合为空时
     *
     * @param coll
     */
    public static void isEmpty(Collection coll) {
        if (CollectionUtils.isEmpty(coll)) {
            message();
        }
    }


    /**
     * 字符串为空
     *
     * @param str
     * @param message
     */
    public static void isBlank(String str, String message) {
        if (StringUtils.isBlank(str)) {
            message(message);
        }
    }

    /**
     * 字符串为空
     *
     * @param str
     * @param codeEnum
     */
    public static void isBlank(String str, ResultCodeEnum codeEnum) {
        if (StringUtils.isBlank(str)) {
            message(codeEnum);
        }
    }

    /**
     * 字符串为空
     *
     * @param str
     */
    public static void isBlank(String str) {
        if (StringUtils.isBlank(str)) {
            message();
        }
    }

    /**
     * 字符串不为空
     *
     * @param str
     * @param message
     */
    public static void isNotBlank(String str, String message) {
        if (StringUtils.isNotBlank(str)) {
            message(message);
        }
    }

    /**
     * 字符串不为空
     *
     * @param str
     * @param codeEnum
     */
    public static void isNotBlank(String str, ResultCodeEnum codeEnum) {
        if (StringUtils.isNotBlank(str)) {
            message(codeEnum);
        }
    }

    /**
     * 字符串不为空
     *
     * @param str
     */
    public static void isNotBlank(String str) {
        if (StringUtils.isNotBlank(str)) {
            message();
        }
    }

    /**
     * 判断为真时
     *
     * @param judgment
     * @param message
     * @
     */
    public static void isTrue(boolean judgment, String message) {
        if (judgment) {
            message(message);
        }
    }

    /**
     * 判断为真时
     *
     * @param judgment
     * @
     */
    public static void isTrue(boolean judgment) {
        if (judgment) {
            message();
        }
    }

    /**
     * 判断为真时
     *
     * @param judgment
     * @param codeEnum
     * @
     */
    public static void isTrue(boolean judgment, ResultCodeEnum codeEnum) {
        if (judgment) {
            message(codeEnum);
        }
    }

    /**
     * 判断为假时
     *
     * @param judgment
     * @param message
     * @
     */
    public static void isFalse(boolean judgment, String message) {
        isTrue(!judgment, message);
    }

    /**
     * 判断为假时
     *
     * @param judgment
     * @param codeEnum
     * @
     */
    public static void isFalse(boolean judgment, ResultCodeEnum codeEnum) {
        isTrue(!judgment, codeEnum);
    }

    /**
     * 判断为假时
     *
     * @param judgment
     * @
     */
    public static void isFalse(boolean judgment) {
        isTrue(!judgment);
    }

    /**
     * map中包含key时
     *
     * @param map
     * @param key
     * @param message
     * @param <K>
     * @param <V>
     */
    public static <K, V> void containsKey(Map<K, V> map, K key, String message) {
        if (MapUtils.isNotEmpty(map) && map.containsKey(key)) {
            message(message);
        }
    }

    /**
     * map中包含key时
     *
     * @param map
     * @param key
     * @param codeEnum
     * @param <K>
     * @param <V>
     */
    public static <K, V> void containsKey(Map<K, V> map, K key, ResultCodeEnum codeEnum) {
        if (MapUtils.isNotEmpty(map) && map.containsKey(key)) {
            message(codeEnum);
        }
    }

    /**
     * map中包含key时
     *
     * @param map
     * @param key
     * @param <K>
     * @param <V>
     */
    public static <K, V> void containsKey(Map<K, V> map, K key) {
        if (MapUtils.isNotEmpty(map) && map.containsKey(key)) {
            message();
        }
    }

    /**
     * map中不包含key时
     *
     * @param map
     * @param key
     * @param message
     * @param <K>
     * @param <V>
     */
    public static <K, V> void notContainsKey(Map<K, V> map, K key, String message) {
        if (MapUtils.isEmpty(map) || !map.containsKey(key)) {
            message(message);
        }
    }

    /**
     * map中不包含key时
     *
     * @param map
     * @param key
     * @param codeEnum
     * @param <K>
     * @param <V>
     */
    public static <K, V> void notContainsKey(Map<K, V> map, K key, ResultCodeEnum codeEnum) {
        if (MapUtils.isEmpty(map) || !map.containsKey(key)) {
            message(codeEnum);
        }
    }

    /**
     * map中不包含key时
     *
     * @param map
     * @param key
     * @param <K>
     * @param <V>
     */
    public static <K, V> void notContainsKey(Map<K, V> map, K key) {
        if (MapUtils.isEmpty(map) || !map.containsKey(key)) {
            message();
        }
    }

    /**
     * 集合中包含obj时
     *
     * @param coll
     * @param obj
     * @param message
     * @param <T>
     * @
     */
    public static <T> void contains(Collection<T> coll, T obj, String message) {
        if (coll.contains(obj)) {
            message(message);
        }
    }

    /**
     * 集合中包含obj时
     *
     * @param coll
     * @param obj
     * @param codeEnum
     * @param <T>
     * @
     */
    public static <T> void contains(Collection<T> coll, T obj, ResultCodeEnum codeEnum) {
        if (coll.contains(obj)) {
            message(codeEnum);
        }
    }

    /**
     * 集合中包含obj时
     *
     * @param coll
     * @param obj
     * @param <T>
     * @
     */
    public static <T> void contains(Collection<T> coll, T obj) {
        if (coll.contains(obj)) {
            message();
        }
    }

    /**
     * 集合中不包含obj时
     *
     * @param coll
     * @param obj
     * @param message
     * @param <T>
     * @
     */
    public static <T> void notContains(Collection<T> coll, T obj, String message) {
        if (!coll.contains(obj)) {
            message(message);
        }
    }

    /**
     * 集合中不包含obj时
     *
     * @param coll
     * @param obj
     * @param codeEnum
     * @param <T>
     * @
     */
    public static <T> void notContains(Collection<T> coll, T obj, ResultCodeEnum codeEnum) {
        if (!coll.contains(obj)) {
            message(codeEnum);
        }
    }

    /**
     * 集合中不包含obj时
     *
     * @param coll
     * @param obj
     * @param <T>
     * @
     */
    public static <T> void notContains(Collection<T> coll, T obj) {
        if (!coll.contains(obj)) {
            message();
        }
    }

    /**
     * 默认数据异常
     */
    public static void message() {
        message(ResultCodeEnum.DATA_ERROR);
    }

    /**
     * 抛出业务异常
     *
     * @param message
     */
    public static void message(String message) {
        throw new BusinessException(message);
    }

    /**
     * 抛出业务异常
     *
     * @param codeEnum
     */
    public static void message(ResultCodeEnum codeEnum) {
        throw new BusinessException(codeEnum);
    }

    /**
     * 抛出自定义异常
     *
     * @param code
     * @param message
     */
    public static void message(String code, String message) {
        throw new BusinessException(message, code);
    }


}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值