一、assert的开启和关闭 因为JVM默认是不启动assert的。因此,你可以使用标记 –enableassertions ( 缩写 -ea ) 来开启断言功能。同样,你也可以使用标记 –disableassertions ( 缩写 -da ) 来关闭断言功能。例: java - enableassertions AssertTest 二、assert的使用
在语法上,为了支持assertion,Java增加了一个关键字assert。它包括两种表达式,分别如下:
在两种表达式中,expression1表示一个boolean表达式,expression2表示一个基本类型或者是一个对象(Object) ,基本类型包括boolean,char,double,float,int和long。由于所有类都为Object的子类,因此这个参数可以用于所有对象。 1、assert <boolean表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出AssertionError,并终止执行。
2、assert <boolean表达式> : <错误信息表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出java.lang.AssertionError,并输出<错误信息表达式>。
1.assert true/false;当为false时,抛出错误,结束程序 2.assert true/false : "error info";当为false时,抛出错误,结束程序,并输出提示信息"error info"
语义含义
在运行时,如果关闭了assertion功能,这些语句将不起任何作用。如果打开了assertion功能,那么expression1的值将被计算,如果它的值为false,该语句强抛出一个AssertionError对象。如果assertion语句包括expression2参数,程序将计算出expression2的结果,然后将这个结果作为AssertionError的构造函数的参数,来创建AssertionError对象,并抛出该对象;如果expression1值为true,expression2将不被计算。 一种特殊情况是,如果在计算表达式时,表达式本身抛出Exception,那么assert将停止运行,而抛出这个Exception。
三、兼容 JDK 1.4 的默认编译模式并不支持断言,因此它的编译需要: javac -source 1.4 Assert.java
输出: D:\java\editplus>javac -d . AssertTest.java
D:\java\editplus>java -enableassertions AssertTest D:\java\editplus> |
|