java断言assert_如何在Java中应用断言Assert

《Java编程艺术》章节选登。作者:高永强 清华大学出版社 (即将出版)

11.9断言——assert

断言语句assert在JDK1.4中首次提供,专门用来进行代码测试和纠错,以提高程序的可靠性。它可以被应用在程序中的任何位置,也被称为运行断点。编程人员在assert语句中提供测试数据的范围或者条件,作为断言或者声明(assertion)。例如,年龄必须大于18岁,提供的断言则是:

age > 18

如果断言为真,即代码中变量age的值大于18,程序将正常运行;而断言为假时,这个断言异常将被JVM抛出,程序将停止运行,并且打印这个异常信息。

断言语句是一种特殊语句,因为它在运行时可以被设置为开启或者关闭。断言关闭是许多IDE系统预设的状态,在运行时,JVM将忽略代码中所有断言语句,所以程序可以更加有效地运行。而需要执行断言时,可设置断言开启选项。在操作系统中利用Java指令运行程序时,必须输入开启断言选项。

如下小节将讨论断言语句的编写、断言状态设置,以及它的应用。

11.9.1断言编写

断言语句的语法格式如下:

assert booleanExpression [: message];

assert——Java关键字。

booleanExpression——布尔代数表达式,为声明的断言。

[:message]——可选项。需要打印的字符串异常信息。

注意,断言语句以分号结束。

为了代码可读性,布尔代数表达式一般用括号括起。下面讨论几个具体例子:

例1.

//完整程序存在本书配套资源目录Ch11中名为AssertTest.java

int age = 17;

assert (age > 18) : "Age must be greater

than 18";

这个例子中的断言语句声明变量age必须大于18,否则将抛出断言异常。这段代码运行后,程序将停止运行,并打印如下信息:

Exception in thread "main"

java.lang.AssertionError: Age must be greater than

18.

at AssertTest.main(AssertTest.java:11)

如果age的值大于18,符合断言,程序将继续正常运行。

例2.

//完整程序存在本书配套资源目录Ch11中名为AssertTest.java

double total = 219.98;

assert (total > 0 .0

&& total < 200.0) : "total: " + total + " – out of

the

range.";

这段代码运行后,程序将停止运行,并将打印如下信息:

Exception in thread "main"

java.lang.AssertionError: total: 219.98 – out of

the range.

at AssertTest.main(AssertTest.java:10)

然而,如果total的值在声明的断言范围之内,程序将继续正常运行。

如果我们利用if语句模拟断言语句的执行功能,上面的例子可以编写如下:

//完整程序存在本书配套资源目录Ch11中名为AssertTest.java

double total = 219.98;

if (total <= 0.0 || total >= 200.0) {//超出合法值范围

System.out.println("total:

" + total + " – out of the range.");

System.out.println("at

AssertTest.main(AssertTest.java:10) ");

System.exit(0);

}

这段代码运行后,程序将停止运行,并将打印如下信息:

total: 219.98 – out of the range.

at AssertTest.main(AssertTest.java:10)

11.9.2开启和关闭断言

在编译时必须设置断言语句为开启状态,即设立编译选项-ea,断言语句才参与运行。ea即enable assertion,可分如下几种设置情况:

l在操作系统中利用java对已经编译的程序运行时,加入断言开启选项-ea。如:

java——ea ClassName

如果使用:

java ClassName.

再次对该程序运行时,断言语句将关闭,JVM将忽略程序中的所有断言语句。

更多信息 也可以利用java –da ClassName关闭断言语句并运行这个程序。da即disable assertion。

l在Eclipse中设置断言语句状态。其步骤如下:

Run菜单

Run...

Arguments

在VM Arguments窗口中,输入:

-ea,或者-enableassertions

Apply

Run

如果需要关闭断言设置时,进入VM Arguments窗口,删除输入的设置即可。

l在TextPad中设置断言语句状态。其步骤如下:

Configure菜单

Preference

Tools

Run Java Application

在Parameters的窗口条中的开始输入:

-ea (注意,在-ea后必须留有一个空格)

确定

如果需要在TextPad中关闭断言设置时,在Parameters窗口条中删除输入的设置即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值