Java 异常处理 二 断言(不重要)
断言(Assertion)是一种调试程序的方式。在Java中,使用assert
关键字来实现断言。
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,
AssertionError
会带上消息x must >= 0。
Java断言的特点是:断言失败时会抛出AssertionError
,导致程序结束退出。因此,断言不能用于可恢复的程序错误,只应该用于开发和测试阶段。
JVM默认关闭断言指令,即遇到assert
语句就自动忽略了,不执行。Java虚拟机传递-enableassertions
(可简写为-ea
)参数启用断
java -ea Main.java Exception in thread "main" java.lang.AssertionError at Main.main(Main.java:5)
还可以有选择地对特定地类启用断言,命令行参数是:-ea:com.itranswarp.sample.Main
,表示只对com.itranswarp.sample.Main
这个类启用断言。
或者对特定地包启用断言,命令行参数是:-ea:com.itranswarp.sample...
(注意结尾有3个.
),表示对com.itranswarp.sample
这个包启动断言。
断言很少被使用,更好的方法是编写单元测试。