栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中Spring的Assert断言的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中Spring的Assert断言的使用

Java中Spring的Assert断言的使用
  • 1 Spring的Assert的简介
  • 2 Spring的Assert的使用

Java中Assert的使用日常较少, 使用Assert可以提高代码的可读性,但过度使用,会导致不利于后期代码的维护.

1 Spring的Assert的简介

Java中断言assert是一个关键字, 主要是验证某些条件是否成立. 在一些编辑器中,需要开启assert断言功能,才可以使用,如IDEA,Eclipse等 ,很不方便使用,在生产等环境不适用, 故常常使用的是Spring框架封装的org.springframework.util.Assert断言.

部分源代码:

public abstract class Assert {

	
	public static void state(boolean expression, String message) {
		if (!expression) {
			throw new IllegalStateException(message);
		}
	}

	
	public static void state(boolean expression, Supplier messageSupplier) {
		if (!expression) {
			throw new IllegalStateException(nullSafeGet(messageSupplier));
		}
	}

	
	@Deprecated
	public static void state(boolean expression) {
		state(expression, "[Assertion failed] - this state invariant must be true");
	}

	
	public static void isTrue(boolean expression, String message) {
		if (!expression) {
			throw new IllegalArgumentException(message);
		}
	}

	
	public static void isTrue(boolean expression, Supplier messageSupplier) {
		if (!expression) {
			throw new IllegalArgumentException(nullSafeGet(messageSupplier));
		}
	}

	
	@Deprecated
	public static void isTrue(boolean expression) {
		isTrue(expression, "[Assertion failed] - this expression must be true");
	}
} 

从代码可知,Assert断言的表达式基本分为两类

  • Assert.方法名 (布尔表达式) : 这类方法都标记过时, 都调用第二类方法
  • Assert.方法名 (布尔表达式,错误提示信息) : 这类方法, 如果布尔表达式不满足,会抛出异常,并将异常信息封装.

在使用方法时不满足布尔表达式, 就会抛出相应的异常,如IllegalStateException和IllegalArgumentException, 此类异常都属于运行时异常.

2 Spring的Assert的使用
        if (条件为真) {
            // 业务处理
        }

上述可替换成

Assert.isTrue(条件为真, "条件不满足");
// 业务处理
    public static void main(String[] args) {

        Assert.isTrue(1>0);
        System.out.println("断言 1>0 成功");
        Assert.isTrue(1 < 0, "断言1 < 0失败");
    }



使用时发现,Spring中主要抛出非法参数异常和非法状态异常, 主要用来做参数的校验,可以提高代码的可读性.对于一些说法, 关于可以替代if-else语句, 是不合理的. if-else主要用来做条件分支判断,满足那个就进入那个, 而Assert断言,满足条件才会向下运行,不满足,直接抛出异常,二者应用场景不一致.

参考资料:

https://www.runoob.com/w3cnote/c-assert.html

https://zhuanlan.zhihu.com/p/265444322

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435134.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号