使用断言测试不变量

使用断言

检查某些内容是否为真的语句,检测程序中的错误。

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并终止。
  • 默认情况下,断言被禁用。

这个家伙很懒,啥也没有留下😋