7.4.1断言的概念
断言机制允许在测试期间向代码中插入一些检查语句。当代码发布时,这些插入的检测语句会被自动地移走。
assert 的两种形式:
- assert 条件;
- assert 条件:表达式;//表达式的目的是产生一个消息字符串。
如果结果为false,则抛出一个AssertionError异常。
7.4.2开启和禁用断言
IDEA开启断言
添加 -enableassertions 或 -ea 选项启用
int num = 100; assert num != 100:"鬼鬼,等于100啦";
运行结果:
Exception in thread "main" java.lang.AssertionError: 鬼鬼,等于100啦 at com.example.demo.test.Pair.main(Pair.java:19)
禁用断言
-disableassertions 或 -da
然而,启用和禁用所有断言的-ea和-da开关不能应用到那些没有类加载器的"系统类"。对于这些系统类来说,需要使用 -enablesystemassertions/-esa开关或启用断言。
7.4.3使用断言完成参数检查
Java语言中的3种系统错误机制:
- 抛出一个异常
- 日志
- 使用断言
什么时候使用断言:
- 断言失败时致命的、不可恢复的错误。
- 断言只用于开发和测试阶段。
java.lang.ClassLoader
- void setDefaultAssertionStatus(boolean b)
对于通过类加载器加载的所有类来说,如果没有显式地说明类或包的断言状态,就启用或禁用断言。- void setClassAssertionStatus(String className, boolean b)
对于给定的类和它的内部类,启用或禁用断言。- void setPackageAsserti onStatus(String packageName, boolean b)
对于给定包和其子包中的所有类,启用或禁用断言.- void clearAssertionStatus()
移去所有类和包的显式断言状态设置,并禁用所有通过这个类加载器加载的类的断言。