浅析JDK 1.4“断言”

ZDNet软件频道 时间:2003-05-30 作者:ZDNet China, 翻译:周靖 |  我要评论()
本文关键词:
简单说,断言是Java编程语言中的一个语句,允许你检测有关一个程序的假设。本文仔细探讨了如何使用断言。
本文译自Builder.com,未经许可请勿转载 断言(Assertion)是JDK 1.4引入的一项强大的编程功能,它能帮助你调试和维护自己的Java代码。简单说,断言是Java编程语言中的一个语句,允许你检测有关一个程序的假设。本文仔细探讨了如何使用断言。

为什么要使用断言?

断言是用于检测一个条件的语句,某种程度上就像一个if语句。如果违反条件,它就触发一个错误,让你知道应该在何处修订自己的假设。这是一种帮你减少出错机率的工具,尤其是减少那些与预期不符的错误。

那么,为什么要使用断言,而不使用传统方法(比如if-then-else,switch-case-default或者try-catch)呢?断言是专为调试而设计的,其他方法则主要用于生产。通过断言,可检测自己的逻辑是否正确,而不是通过它来捕捉不可控制的异常。

许多开发者都认为断言是最快和最有效的调试方式。比较以下代码即可看出差异:

If-then-else风格:
if (i % 3 != 0) {
if (i < 0)
{
System.err.println("Error in Variable i");
return -1;
}
System.out.println("Change $"+i%3);


断言风格:
if (i % 3 != 0) {
assert i > 0;
System.out.println("Change $"+i%3);
}


以上两段代码的工作方式几乎完全相同。如果变量i小于0(这是不正常的),第一段代码会报告Error in Variable i。第二段代码则引发一个断言错误,指出发生错误的行号。显然,断言方式所需的行数要少得多。

在代码中使用断言
有三种方式可在Java代码中使用断言。A对此进行了总结。


表A

语法 例子
assert Expression1; assert i%3==2;
assert Expression1 : Expression2; assert i%3==2 : "Wow, Error";
throw new AssertionError(Expression1); throw new AssertionError("Oh no");

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134