JDK1.4新特性:断言

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

摘要

JDK1.4中引入的一个新特性之一就是断言(assert),为程序的调试提供了强有力的支持,以下的文档根据SUNTEC内容及相关内容组成。

源代码:

/**

* Simple examples of the use of the new assertion feature in JDK1.4

*

* @author S.Ritter 16/7/2001

**/

public class AssertExample {

public static void main(String[] args) {

int x = 10;

if (args.length > 0) {

try {

x = Integer.parseInt(args[0]);

} catch (NumberFormatException nfe) {

/* Ignore */

}

}

System.out.println("Testing assertion that x == 10");

assert x == 10:"Our assertion failed";

System.out.println("Test passed");

}

}

由于引入了一个新的要害字,所以在编译的时候就需要增加额外的参数,要编译成功,必须使用JDK1.4的Javac并加上参数'-source 1.4',例如可以使用以下的命令编译上面的代码:

javac -source 1.4 AssertExample.java

以上程序运行使用断言功能也需要使用额外的参数(并且需要一个数字的命令行参数),例如:

java -ea AssertExample 1

程序的输出为:

Testing assertion that x == 10

Exception in thread "main" java.lang.AssertionError:

Our assertion failed

at AssertExample.main(AssertExample.java:20)

由于输入的参数不等于10,因此断言功能使得程序运行时抛出断言错误,注重是错误,这意味着程序发生严重错误并且将强制退出。断言使用boolean值,假如其值不为true则抛出AssertionError并终止程序的运行。

由于程序员的问题,断言的使用可能会带来副作用,例如:

boolean isEnable=false;

//...

assert isEnable=true;

这个断言的副作用是因为它修改程序变量的值并且没有抛出错误,这样的错误假如不细心检查很难发现。但是同时我们可以根据以上的副作用得到一个有用的特性,根据它测试是否将断言打开了。

/**

* Simple examples test enable assertion feature in JDK1.4

*

* @author Cherami 25/4/2002

**/

public class AssertExample2 {

public static void main(String[] args) {

boolean assertEnable=false;

assert assertEnable=true;

if (assertEnable==false){

throw new RuntimeException("Assertions should be enable");

}

}

}

假如我们不使用-ea参数运行上面的程序,则控制台将输出:

Exception in thread "main" java.lang.RuntimeException:

Assertions should be enab

le

at AssertExample.main(AssertExample.java:14)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航