断言的介绍(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

你可能感兴趣的:(Java,Java技术栈)