观前提示:
本文所使用的IDEA版本为ultimate 2019.1,JDK版本为1.8.0_141。
1.简介
编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。
2.用法
在JAVA SE 1.4开始引用的assert关键字,在默认情况下是关闭的,如果想要开启断言,需要用开关-enableassertions或-ea来开启。
两种用法:
-
assert <boolean表达式>
如果 <boolean表达式>为true时,程序正常执行。
如果 <boolean表达式>为false时,则抛出java.lang.AssertionError,并且终止程序。 -
assert <boolean表达式> : <错误信息>
如果 <boolean表达式>为true时,程序正常执行。
如果 <boolean表达式>为false时,则抛出java.lang.AssertionError,输出信息为 <错误信息>,并且终止程序。
3.例子
测试代码 Test.java
package testAssert;
public class Test {
public static void main(String[] args) {
assert true;
System.out.println("assert true 断言通过");
assert false : "assert false 断言失败";
System.out.println("assert false 断言通过");
}
}
在未开始-ea开关的情况下,结果为
若想要开启断言,需要在VM options配置-ea或-enableassertions
开启-ea开关后,运行结果为
4.总结
-
assert与junit相似,但是功能性却远远不如junit,推荐大家尽量避免使用assert。
-
assert断言失败程序便会退出,在实际生产环境中通常是对异常捕获处理来解决问题,如果使用断言,断言失败则意味着系统挂掉。
-
assert调试程序时,现在主流的Java IDE工具默认是关闭-ea开关,需要开启-ea开关才能使用,对于Java Web应用而言,需要改变Web应用运行配置参数,对于程序的部署十分不便。