1.断言
在Java中,使用assert关键字来实现断言。
断言失败时会抛出AssertionError
,导致程序结束退出。因此,断言不能用于可恢复的程序错误,只应该用于开发和测试阶段。
1.1使用
Java断言有两种形式:
- 简单形式:
assert condition;
如果condition为false,抛出AssertionError
- 带消息形式:
assert condition : expression;
如果condition为false,抛出AssertionError并显示expression的值
public static void main(String[] args) {
double x = Math.abs(-123.45);
assert x >= 0 : "x must >= 0";
System.out.println(x);
}
语句assert x >= 0;
即为断言,断言条件x >= 0
预期为true
。如果计算结果为false
,则断言失败,抛出AssertionError
。
Exception in thread "main" java.lang.AssertionError: x must >= 0
at Main.main(Main.java:6)
1.2 启用断言
默认情况下断言是禁用的,必须显式启用:
- 运行时启用:
java -ea MyClass # 启用所有断言
java -ea:MyClass MyClass # 仅启用MyClass中的断言
java -da:MyClass MyClass # 禁用MyClass中的断言
- 在IDE中启用:
Eclipse: Run → Run Configurations → Arguments → VM arguments: -ea
IntelliJ: Run → Edit Configurations → VM options: -ea