在一个具有自我保护能力的程序中,断言很常用。
断言机制允许在测试期间向代码中插入一些检查语句。当代码发布时,这些插入的检测语句将会被自动地移走。
Java语言引入了关键字assert。这个关键字有两种形式:
assert 条件;
assert 条件 : 表达式;
这两种形式都会对条件进行检测,如果结果为 false,则抛出一个 AssertionError 异常。在第二种形式中,表达式将被传入 AssertionError 的构造器,并转换成一个消息字符串。
要想断言x是一个非负数值,只需要简单地使用下面这条语句:
assert x >= 0;
// or 报道一个问题
assert x >=0 : x;
assert x >=0 : "x >= 0";
启动和禁用断言
在默认情况下,断言被禁用。可以在运行程序时用 -enableassertions
或 -ea
选项启用:
$ java -enableassertions MyApp
$ java -ea MyApp
需要注意的是,在启用或禁用断言时不必重新编译程序。启用或禁用断言是类加载器(class loader)的功能。当断言被禁用时,类加载器将跳过断言代码,因此,不会降低程序运行的速度。
使用断言需要注意的点:
- 断言失败是致命的、不可恢复的错误。
- 断言检查只用于开发和测阶段