JDK1.4新特性:断言

<script type="text/javascript"> google_ad_client = "pub-8800625213955058"; /* 336x280, 创建于 07-11-21 */ google_ad_slot = "0989131976"; google_ad_width = 336; google_ad_height = 280; // </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值