自定义断言工具类

前言

工作中经常使用if else 抛出自定义异常信息给前端,有时候一个请求方法需要很多if else 判断,此工具是为了消除if else 判断,简化代码

代码实现

java 复制代码
/**
 * 自定义断言类 指定断言不通过时抛出的异常
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class CustomAssertUtil {

    /**
     * 是否为 true 如果为 false抛出异常
     * @param expression bool
     * @param message    提示信息
     */
    public static void isTrue(boolean expression, String message) {
        isTrue(expression, message, PunctuationConstant.EMPTY);
    }

    public static void isTrue(boolean expression, String message, Object... args) {
        if (!expression) {
            deFaultThrowCommon(StrUtil.format(message, args));
        }
    }

    /**
     * 是否为 true 如果为 false抛出异常
     * @param expression bool
     */
    public static <X extends Throwable> void isTrue(boolean expression, Supplier<? extends X> supplier) throws X {
        if (!expression) {
            throw supplier.get();
        }
    }

    /**
     * 是否为 false 如果为 true 抛出异常
     *
     * @param expression bool
     * @param message    提示信息
     */
    public static void isFalse(boolean expression, String message) {
        isTrue(!expression, message);
    }

    /**
     * 是否为 false 如果为 true 抛出异常
     *
     * @param expression bool
     * @param message    提示信息
     */
    public static void isFalse(boolean expression, String message, Object... args) {
        isTrue(!expression, message, args);
    }

    /**
     * 是否为 false 如果为 true 抛出异常
     * @param expression bool
     */
    public static <X extends Throwable> void isFalse(boolean expression, Supplier<? extends X> supplier) throws X {
        if (expression) {
            throw supplier.get();
        }
    }

    /**
     * 是否为 null 如果不为 null 抛出异常
     * @param object  obj
     * @param message 提示信息
     */
    public static void isNull(Object object, String message) {
        isNull(object, message, PunctuationConstant.EMPTY);
    }

    /**
     * 是否为 null 如果不为 null 抛出异常
     * @param object  obj
     * @param message 提示信息
     */
    public static void isNull(Object object, String message, Object... args) {
        isTrue(object == null, message, args);
    }

    /**
     * 是否为 null 如果不为 null 抛出异常
     * @param object  obj
     * @param supplier 自定义异常
     */
    public static <X extends Throwable> void isNull(Object object, Supplier<X> supplier) throws X {
        isTrue(object == null, supplier);
    }

    /**
     * 是否不为 null 如果为 null 抛出异常
     * @param object  obj
     * @param message 提示信息
     */
    public static void isNotNull(Object object, String message) {
        isNotNull(object, message, PunctuationConstant.EMPTY);
    }

    /**
     * 是否不为 null 如果为 null 抛出异常
     * @param object  obj
     * @param message 提示信息
     */
    public static void isNotNull(Object object, String message, Object... args) {
        isTrue(object != null, message, args);
    }

    /**
     * 是否不为 null 如果为 null 抛出异常
     */
    public static <X extends Throwable> void isNotNull(Object object, Supplier<X> supplier) throws X {
        isTrue(object != null, supplier);
    }

    /**
     * 是否 为空 不为空抛出 异常
     * @param str  str
     * @param message 提示信息
     */
    public static void isEmpty(String str, String message) {
        isEmpty(str, message, PunctuationConstant.EMPTY);
    }

    /**
     * 是否 为空 不为空抛出 异常
     * @param str  str
     * @param message 提示信息
     */
    public static void isEmpty(String str, String message, Object... args) {
        isTrue(StrUtil.isEmpty(str), message, args);
    }

    /**
     * 是否 为空 不为空抛出 异常
     * @param str  str
     * @param supplier 自定义异常
     */
    public static <X extends Throwable> void isEmpty(String str, Supplier<X> supplier) throws X {
        isTrue(StrUtil.isEmpty(str), supplier);
    }

    /**
     * 集合为空, 如果不为null或不为空集合则抛出异常
     * @param col     集合
     * @param message 提示信息
     */
    public static void isEmpty(Collection<?> col, String message) {
        isEmpty(col, message, PunctuationConstant.EMPTY);
    }

    /**
     * 集合为空, 如果不为null或不为空集合则抛出异常
     * @param col     集合
     * @param message 提示信息
     */
    public static void isEmpty(Collection<?> col, String message, Object... args) {
        isTrue(CollectionUtil.isEmpty(col), message, args);
    }


    /**
     * 集合为空, 如果不为null或不为空集合则抛出异常
     */
    public static <X extends Throwable> void isEmpty(Collection<?> col, Supplier<X> supplier) throws X {
        isTrue(CollectionUtil.isEmpty(col), supplier);
    }



    /**
     * 是否 不为空 为空抛出 异常
     * @param str  str
     * @param message 提示信息
     */
    public static void isNotEmpty(String str, String message) {
        isNotEmpty(str, message, PunctuationConstant.EMPTY);
    }

    /**
     * 是否 不为空 为空抛出 异常
     * @param str  str
     * @param message 提示信息
     */
    public static void isNotEmpty(String str, String message, Object... args) {
        isTrue(StrUtil.isNotEmpty(str), message, args);
    }

    /**
     * 是否 不为空 为空抛出 异常
     * @param str  str
     * @param supplier 自定义异常
     */
    public static <X extends Throwable> void isNotEmpty(String str, Supplier<X> supplier) throws X {
        isTrue(StrUtil.isNotEmpty(str), supplier);
    }

    /**
     * 集合不为空, 如果为null或空集合则抛出异常
     * @param col     集合
     * @param message 提示信息
     */
    public static void isNotEmpty(Collection<?> col, String message) {
        isNotEmpty(col, message, PunctuationConstant.EMPTY);
    }

    /**
     * 集合不为空, 如果为null或空集合则抛出异常
     * @param col     集合
     * @param message 提示信息
     */
    public static void isNotEmpty(Collection<?> col, String message, Object... args) {
        isTrue(CollectionUtil.isNotEmpty(col), message, args);
    }


    /**
     * 集合不为空, 如果为null或空集合则抛出异常
     */
    public static <X extends Throwable> void isNotEmpty(Collection<?> col, Supplier<X> supplier) throws X {
        isTrue(CollectionUtil.isNotEmpty(col), supplier);
    }


    /**
     * 是否 为空 不为空抛出 异常
     * @param str  str
     * @param message 提示信息
     */
    public static void isBlank(String str, String message) {
        isBlank(str, message, PunctuationConstant.EMPTY);
    }

    /**
     * 是否 为空 不为空抛出 异常
     * @param str  str
     * @param message 提示信息
     */
    public static void isBlank(String str, String message, Object... args) {
        isTrue(StrUtil.isBlank(str), message, args);
    }

    /**
     * 是否 为空 不为空抛出 异常
     * @param str  str
     * @param supplier 自定义异常
     */
    public static <X extends Throwable> void isBlank(String str, Supplier<X> supplier) throws X {
        isTrue(StrUtil.isBlank(str), supplier);
    }

    /**
     * 是否 不为空 为空抛出 异常
     * @param str  str
     * @param message 提示信息
     */
    public static void isNotBlank(String str, String message) {
        isNotBlank(str, message, PunctuationConstant.EMPTY);
    }

    /**
     * 是否 不为空 为空抛出 异常
     * @param str  str
     * @param message 提示信息
     */
    public static void isNotBlank(String str, String message, Object... args) {
        isTrue(StrUtil.isNotBlank(str), message, args);
    }

    /**
     * 是否 不为空 为空抛出 异常
     * @param str  str
     * @param supplier 自定义异常
     */
    public static <X extends Throwable> void isNotBlank(String str, Supplier<X> supplier) throws X {
        isTrue(StrUtil.isNotBlank(str), supplier);
    }




    /**
     * 是否 allNotNull,hasNull抛出异常
     *
     * @param col     集合
     * @param message 提示信息
     */
    public static void isAllNotNull(Collection<?> col, String message) {
        isAllNotNull(col, message, PunctuationConstant.EMPTY);
    }

    /**
     * 是否 allNotNull,hasNull抛出异常
     *
     * @param col     集合
     * @param message 提示信息
     */
    public static void isAllNotNull(Collection<?> col, String message, Object... args) {
        isTrue(CollectionUtil.isNotEmpty(col), message, args);
        isTrue(col.stream().anyMatch(Objects::isNull), message, args);
    }

    /**
     * 是否 allNotNull,hasNull抛出异常
     */
    public static <X extends Throwable> void isAllNotNull(Collection<?> col, Supplier<X> supplier) throws X {
        isTrue(CollectionUtil.isNotEmpty(col), supplier);
        isFalse(col.stream().anyMatch(Objects::isNull), supplier);
    }

    /**
     * 是否都不为空 如果存在为空 的元素则抛出异常
     * @param col     集合
     * @param message 提示信息
     */
    public static void isAllNotEmpty(Collection<String> col, String message) {
        isAllNotEmpty(col, message, PunctuationConstant.EMPTY);
    }

    /**
     * 是否都不为空 如果存在为空 的元素则抛出异常
     * @param col     集合
     * @param message 提示信息
     */
    public static void isAllNotEmpty(Collection<String> col, String message, Object... args) {
        // 集合不为空判断
        isTrue(CollectionUtil.isNotEmpty(col), message, args);
        // 集合中不存在空元素
        isFalse(col.stream().anyMatch(StrUtil::isEmpty), message, args);
    }

    /**
     * 断言集合中所有元素都不为空,如果存在空元素则抛出异常
     * @param col     集合
     * @param supplier 自定义异常
     */
    public static <X extends Throwable> void isAllNotEmpty(Collection<String> col, Supplier<X> supplier) throws X {
        // 集合不为空判断
        isTrue(CollectionUtil.isNotEmpty(col), supplier);
        // 集合中不存在空元素
        isFalse(col.stream().anyMatch(StrUtil::isEmpty), supplier);
    }


    /**
     * 是否都不为空 如果存在为空 的元素则抛出异常
     * @param col     集合
     * @param message 提示信息
     */
    public static void isAllNotBlank(Collection<String> col, String message) {
        isAllNotBlank(col, message, PunctuationConstant.EMPTY);
    }

    /**
     * 是否都不为空 如果存在为空 的元素则抛出异常
     * @param col     集合
     * @param message 提示信息
     */
    public static void isAllNotBlank(Collection<String> col, String message, Object... args) {
        // 集合不为空判断
        isTrue(CollectionUtil.isNotEmpty(col), message, args);
        // 集合中不存在空白元素
        isFalse(col.stream().anyMatch(StrUtil::isBlank), message, args);
    }

    /**
     * 断言集合中所有元素都不为空,如果存在空元素则抛出异常
     * @param col     集合
     * @param supplier 自定义异常
     */
    public static <X extends Throwable> void isAllNotBlank(Collection<String> col, Supplier<X> supplier) throws X {
        // 集合不为空判断
        isTrue(CollectionUtil.isNotEmpty(col), supplier);
        // 集合中不存在空白元素
        isFalse(col.stream().anyMatch(StrUtil::isBlank), supplier);
    }




    /**
     * 两个对象相等,如果不相等则抛出异常
     * @param sourceObject obj1
     * @param targetObject obj2
     * @param message 提示信息
     */
    public static void equal(Object sourceObject, Object targetObject, String message) {
        equal(sourceObject, targetObject, message, PunctuationConstant.EMPTY);
    }

    /**
     * 两个对象相等,如果不相等则抛出异常
     * @param sourceObject obj1
     * @param targetObject obj2
     * @param message 提示信息
     */
    public static void equal(Object sourceObject, Object targetObject, String message, Object... args) {
        isTrue(Objects.equals(sourceObject, targetObject), message, args);
    }

    /**
     * 两个对象相等,如果不相等则抛出异常
     * @param sourceObject obj1
     * @param targetObject obj2
     * @param supplier 自定义异常
     */
    public static <X extends Throwable> void equal(Object sourceObject, Object targetObject, Supplier<X> supplier) throws X {
        isTrue(Objects.equals(sourceObject, targetObject), supplier);
    }

    /**
     * 断言两个对象不相等,如果相等则抛出异常
     * @param sourceObject obj1
     * @param targetObject obj2
     * @param message 提示信息
     */
    public static void notEqual(Object sourceObject, Object targetObject, String message) {
        notEqual(sourceObject, targetObject, message, PunctuationConstant.EMPTY);
    }

    /**
     * 断言两个对象不相等,如果相等则抛出异常
     * @param sourceObject obj1
     * @param targetObject obj2
     * @param message 提示信息
     */
    public static void notEqual(Object sourceObject, Object targetObject, String message, Object... args) {
        isTrue(Objects.equals(sourceObject, targetObject), message, args);
    }

    /**
     * 断言两个对象不相等,如果相等则抛出异常
     * @param sourceObject obj1
     * @param targetObject obj2
     * @param supplier 自定义异常
     */
    public static <X extends Throwable> void notEqual(Object sourceObject, Object targetObject, Supplier<X> supplier) throws X {
        isFalse(Objects.equals(sourceObject, targetObject), supplier);
    }

    /**
     * 默认抛出异常
     * @param message 提示信息
     */
    public static void deFaultThrowCommon(String message) {
        throw new CommonException(message);
    }

}

使用举例

相关推荐
mldong4 小时前
引擎从不发一条消息:jeeflow 的两类扩展点与消息模块的分工
java·架构
君顾14 小时前
智慧零售实战指南:从技术架构到落地方案全解析
java·开发语言·零售
zhanghe6875 小时前
es的密码带有特殊字符,导出
java
pnoker5 小时前
IoT DC3 概念解读:把设备抽象成一套语义模板——位号、指令、事件与面向智能体的设备建模
java·人工智能·物联网·iot·dc3
my_realmy5 小时前
Java SE 基础学习笔记(一):面向对象、继承多态、抽象接口与异常(JDK 8)
java·多线程·并发··生产者消费者模式
天远数科6 小时前
风险治理实战:基于天远车信盟出险构建自动化理赔核保流水线
java·网络·人工智能·自动化
骇客野人6 小时前
SpringBoot电商系统用户注册、登录、留存及数据埋点设计与落地实施方案
java·spring boot·后端
qiuhaipeng16 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库
wxwx_bscxy3227 小时前
基于Python新冠疫情可视化分析系统的设计与实现
java·数据库·spring boot·python·微信小程序·sqlite
evans在进步8 小时前
Tomcat NIO 工作原理详解:从 Acceptor、Poller 到容器处理链
java·tomcat·nio