使用断言测试不变量
使用断言
检查某些内容是否为真的语句,检测程序中的错误。
assert booleanExpression;
等价于
if(booleanExpressionIsFalse) {
throw new AssertionError();
}
如果 booleanExpression 的计算结果为 FALSE,则会引发 java.lang.AssertionError 类型的异常(Error 的子类)
- 断言语句也可以将 String 作为消息
assert booleanExpression: "Message about the error";
等价于
if(booleanExpressionIsFalse) {
throw new AssertionError("Message about the error");
}
默认情况下断言是不启用的。在代码中使用断言,但是如果它们是禁用的,Java 会跳过它们
开启断言
断言是在cmd命令行中启用的
java –ea MainClass
java –enableassertions MainClass
注意点
- 如果启用断言并且布尔表达式为true,则不会发生任何事情。
- 如果启用了断言,并且布尔表达式为false,则抛出AssertionError。
- 如果断言被禁用,无论布尔表达式的结果如何,断言都将被忽略。
public TestAssertion {
public static void main(String[] args) {
// Parentheses are optional
assert (args.length > 0) :
"At least one argument is required"; System.out.println(args[0]); }
}
断言可以帮助我们捕捉从程序中的假设中派生出来的一些错误。请注意,默认情况下它们不是启用的。它们并不是设计用来在生产环境中运行的,因此,最好使用常规异常。
断言更好地用于验证参数、属性、前置条件、后置条件、应用程序控制流(针对不应该达到的代码点) ,以及一般的错误检查,否则,当代码准备投入生产时,您将不得不对其进行注释或禁用。
总结
- 断言是一种语句,用于检查某些内容是否正确,并帮助您检测程序中的错误。
- assert语句具有以下语法:
1.assert booleanExpression;
2.assert booleanExpression: "Message about the error"; - 如果assert语句的布尔表达式的计算结果为false,则程序将抛出java.lang.AssertionError并终止。
- 默认情况下,断言被禁用。
Comments | 0 条评论