java中的assert(断言)
文章作者 100test 发表时间 2007:03:14 17:05:20
来源 100Test.Com百考试题网
断言是Java 1.4中新添加的功能,是Java中的一种新的错误检查机制,它提供了一种在代码中进行正确性检查的机制,但是这项功能可以根据需要关闭。断言包括:assert关键字,AssertionError类,以及在java.lang.ClassLoader中增加了几个新的有关assert方法。
assert最重要的特点是assert语句可以在运行时任意的开启或关闭,默认情况下是关闭的。
断言语句有两种合法的形式:a.assert expression1. b.assert expression1 : expression2.
expression1是一条被判断的布尔表达式,必须保证在程序执行过程中它的值一定是真;expression2是可选的,用于在expression1为假时,传递给抛出的异常AssertionError的构造器,因此expression2的类型必须是合法的AssertionError构造器的参数类型。AssertionError除了一个不带参数的缺省构造器外,还有7个带单个参数的构造器,分别为:object(eg.String) boolean char int long float double。第一种形式如果抛出异常,则调用AssertionError的缺省构造器,对于第二种形式,则根据expression2值的类型,分别调用7种单参数构造器中的一种。
A.assert程序的编译:javac -source 1.4 TestAssert.java(提示java按1.4版本编译)
B.assert程序的运行:java –ea TestAssert 或者 java –ea:TestAssert TestAssert
其它的运行参数:java -ea:pkg0... TestAssert;java –esa;java –dsa(系统类断言),另外,还可以同时组合用。当一个命令行使用多项 -ea -da 参数时,遵循两个基本的原则:后面的参数设定会覆盖前面参数的设定,特定具体的参数设定会覆盖一般的参数设定。
C.AssertinError类是Error的直接子类,因此代表程序出现了严重的错误,这种异常通常是不需要程序员使用catch语句捕捉的。
D.使用assert的准则:assert语句的作用是保证程序内部的一致性,而不是用户与程序之间的一致性,所以不应用在保证命令行参数的正确性。可以用来保证传递给private方法参数的正确性。因为私有方法只是在类的内部被调用,因而是程序员可以控制的,我们可以预期它的状态是正确和一致的。公有方法则不适用。此外,assert语句可用于检查任何方法结束时状态的正确性,及在方法的开始检查相关的初始状态 等等。
assert语句并不构成程序正常运行逻辑的一部分,时刻记住在运行时它们可能不会被执行。