7.4 使用断言

7.4.1断言的概念

断言机制允许在测试期间向代码中插入一些检查语句。当代码发布时,这些插入的检测语句会被自动地移走。

assert 的两种形式:

  • assert 条件;
  • assert 条件:表达式;//表达式的目的是产生一个消息字符串。

如果结果为false,则抛出一个AssertionError异常。

7.4.2开启和禁用断言

IDEA开启断言

7.4 使用断言_第1张图片

添加 -enableassertions 或 -ea 选项启用

7.4 使用断言_第2张图片

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()
    移去所有类和包的显式断言状态设置,并禁用所有通过这个类加载器加载的类的断言。

你可能感兴趣的:(Java核心技术,卷Ⅰ,7异常断言和日志)