断言的介绍(assert)

断言
            假设要进行如下的计算:
            double y = Math.sqrt(x);
            为了让程序健壮,你会先进行测试检查并抛出异常而不让x的值为负数。
            if(x<0) throw new IllealArgumentException("x < 0");
            但是,就算是测试结束了,以后实际运行时x的值不会小于0。这种测试代码会一直保留在你的程序中。如果程序中有太多的检查,程序的运行就会慢好多。
            如果在测试阶段会有这种检查,而在发布阶段能自动删除这些东西。该多好! 这就是断言机制。
            1. 断言使用
               在JDK1.4中,Java语言引入一个新的关键字: assert。 该关键字有两种形式:
               assert  条件
               以及
               assert  条件: 表达式
               这两种形式都会对条件进行评估,如果结果为假则抛出AssertionError。 在第二种形式中,表达式会传入AssertionError的构造器并转成一个消息字符串。
               表达式部分的唯一目的就是生成一个消息字符串。AssertionError对象并不存储表达式的值,因此你不可能在以后获取它。
               要断言x不是负数,只需要使用如下简单的语句:
               assert x >= 0;
               或者你可以将x的值传递给AssertionError对象,从而可以在以后显示:
               assert x >= 0 : x;
            2. 断言内容代码编译
               因为assert是一个新的关键字,因此在使用时需要告诉编译器你编译所使用jdk的版本号。
               javac -source 1.4 MyClass.java
               在jdk的后续版本中,对断言的支持成为默认特性(我们使用的是JDK7.0,使用不需要使用这个编译,默认就支持的)。
            3. 断言内容代码执行
               默认情况下,断言是关闭的。要通过-enableassertions或者-ea选项来运行程序以打开断言:
               java -enableassertions com.sample.MyApp
               java -cp bin -ea com.sample.MyApp

               打开或关闭断言是类装载器的功能。当断言功能被关闭时,类装载器会跳过那些和断言相关的代码,因此不会降低程序运行速度。


参见异常处理:http://blog.csdn.net/suwu150/article/details/51311780

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suwu150

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值