Java - 断言 (IDEA、Eclipse 开启断言)

1 断言的概念

  • 断言机制允许在测试期间向代码中插入一些检查,而在生产代码中会自动删除这些检查。
  • 断言是一种测试和调试阶段使用的战术性工具。
  • 关键字 assert

2 断言的两种使用形式

	assert condition; 
	//如果条件判断为true,程序继续执行。如果条件判断为false,则抛出 AssertionError异常。
	assert condition:expression; 
	//将表达式传给AssertError对象构造器,并转换成一个消息字符串。
	package asserts;
	public class Demo01 {
	    public static void main(String[] args) {
	        int x = 10;
	
	        //断言x 非负数
	        assert x >= 0;
	        assert x>=0:x;
	    }
	}

3 启用和禁用断言

  • 默认情况下,断言是禁用的。开启命令-ea ,关闭命令-da

3.1 IDEA 开启/关闭断言

在这里插入图片描述
在这里插入图片描述

  • 开启或关闭断言后,不需要重新编译程序,因为启用或禁用断言是**类加载器(class loader)**的功能。禁用断言时,类加载器会除去断言代码,因此,不会降低程序的运行速度。
  • 关闭:将命令删除或改为-da

3.2 Eclipse开启/关闭断言

  • 和IDEA差不多
    在这里插入图片描述
    在这里插入图片描述
  • 关闭:将命令删除或改为-da

3.3 命令行开启关闭断言(了解)

  • -enableassertions-ea选项启用断言
  • -disableassertions-da禁用断言
  • -enablesystemassertions/-esa开启没有类加载器的系统类
    在这里插入图片描述
public class Hello{
	public static void main(String[] args){
		int x = -10;
		System.out.println(x);
		assert x>0;
		assert x>0:x;
		System.out.println(x);
	}
}

在这里插入图片描述

4 什么时候使用断言

  • 断言失败是致命的、不可恢复的错误。
  • 断言检查只是在开发和测试阶段打开。
  • 断言只应该用于测试阶段确定内部错误的位置。

5 类加载器断言状态

java.lang.ClassLoader
    * void setDefaultAssertionStatus(boolean b)
    为通过类加载器加载的类(没有显示的类或包断言状态)启用或禁用断言
    * void setClassAssertionStatus(String className,boolean b)
    为给定的类和它的内部类启用或禁用断言
    * void setPackageAssertionStatus(Strng packageName,boolean b)
    为给定的包及其子包中的所有类启用或禁用断言
    * void clearAssertionStatus()
    删除所有显示的类和包的断言状态设置,并禁用通过这个类加载器加载的所有类的断言

6 参考资料

《Java 核心技术 卷I》第11版

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值