您的位置:jsp学习站首页 >> 框架/开源 >> JMX >> J2SE 1.4 中assertion 功能介绍

J2SE 1.4 中assertion 功能介绍 (1)

[ 来源:互网络 | 更新日期:2007-09-24 15:27:21 | 浏览次数:10050]
简介:4 在JAVA中新增添了assertion(暂译作断定)功能。 最简单的情形下,在JAVA代码中任一行可以写入一条布尔表达式, 在这一行代码的最前面加上assert关键字,就可以实现这样的功能: 如果表达式为真,则代码继续执行;否则,抛出异常。为了实现这项功能, 在JAVA中新添加了assert关键字,AssertionError类, java
摘要
J2SE 1.4 在JAVA中新增添了assertion(暂译作断定)功能。 最简单的情形下,在JAVA代码中任一行可以写入一条布尔表达式, 在这一行代码的最前面加上assert关键字,就可以实现这样的功能: 如果表达式为真,则代码继续执行;否则,抛出异常。为了实现这项功能, 在JAVA中新添加了assert关键字,AssertionError类, java.lang.ClassLoader中增加了几个新的方法。 本文章详细介绍了assert关键字的使用, 从命令行控制assertion功能,从代码内部控制assertion功能,以及何时使用assertion功能等内容。下文中提到assert时特指assert关键字,而提到assertion则表示断定语句或断定功能。

作者: 甲子

assertion功能提供了一种在代码中进行正确性检查的机制,这种检查通常用于开发和调试阶段,到了软件完成部署后就可以关闭。这使得程序员可以在代码中加入调试检查语句,同时又可以在软件部署后关闭该功能而避免对软件速度和内存消耗的影响。基本上,assertion功能就是JAVA中的一种新的错误检查机制,只不过这项功能可以根据需要关闭。

通常在C和C++中,断定功能语句是可以通过预处理过程而不编译进最终的执行代码,由于JAVA中没有宏功能,所以在以前的java版本中断定功能没有被广泛的使用,在JDK1.4中通过增加assert关键字改变了这种状况。

这项新功能最重要的特点是断定语句可以在运行时任意的开启或关闭,这意味着这些起错误检查功能的语句不必在开发过程结束后从源代码中删除。

assertion语法非常简单,但正确的使用能帮助我们编写出健壮(ROBAST)可靠的代码。这篇文章中,我们不仅学习如何编写assertion语句,更要讨论应该在什么情况下使用assertion语句。

一、assertion语法基本知识


我们可以用新的JAVA关键字assert来书写断定语句。一条断定语句有以下两种合法的形式:

assert expression1;
assert expression1 : expression2;

expression1是一条被判断的布尔表达式,必须保证在程序执行过程中它的值一定是真;expression2是可选的,用于在expression1为假时,传递给抛出的异常AssertionError的构造器,因此expression2的类型必须是合法的AssertionError构造器的参数类型。以下是几条断定语句的例子:

assert 0 < value;
assert ref != null;
assert count == (oldCount + 1);
assert ref.m1(parm);

assert关键字后面的表达式一定要是boolean类型,否则编译时就会出错。

以下是使用断定语句的一个完整例子(见粗体语句行):

public class aClass {
public void aMethod( int value ) {
assert value >= 0;
System.out.println( "OK" );
}
public static void main( String[] args ){
aClass foo = new aClass();
System.out.print( "aClass.aMethod( 1 ): " );
foo.aMethod( 1 );
System.out.print( "aClass.aMethod( -1 ): " );
foo.aMethod( -1 );
}
}


这段程序通过语句 assert value >= 0; 来判断传入aMethod方法中的参数是否不小于0,如果传入一个负数,则会触发AssertionError的异常。

为了和J2SE 1.4 以前的程序兼容,在JDK1.4 中的javac 和 java 命令在默认情况下都是关闭assertion功能的,即不允许使用assert作为关键字,这就保证了如果你以前编写的程序中如果使用了assert作为变量名或是方法名,程序不必修改仍然可以运行。但需要注意的是,这些程序是无法使用JDK1.4 的javac进行重新编译的,只能使用JDK1.3或之前的版本编译。为了编译我们前面写的小程序,首先要使用符合J2SE
[1] [2] [3] [4] [5] [6] [7] [8]
Tags:关键字:J2SE 1.4 中assertion 功能介绍
责任编辑:glen