如何在控制流不变量中使用断言?

时间:2016-03-24 13:51:56

标签: java assertion

前面的例子不仅测试了一个不变量,还检查了应用程序控制流的假设。原始switch语句的作者可能不仅假设suit变量总是具有四个值中的一个,而且还总是执行四个case中的一个。它指出了另一个你应该使用断言的一般区域:在你认为不会到达的任何位置放置一个断言。要使用的断言语句是:

assert false;

例如,假设您有一个如下所示的方法:

void foo() {
    for (...) {
      if (...)
        return;
    }
    // Execution should never reach this point!!!
}

替换最终评论,以便代码现在显示为:

void foo() {
    for (...) {
      if (...)
        return;
    }
    assert false; // Execution should never reach this point!
}

注意:谨慎使用此技术。如果Java语言规范中定义的语句无法访问,如果您尝试断言未到达,则会出现编译时错误。同样,一个可接受的替代方案就是抛出AssertionError。

我在Java语言规范中找到了这些。控制流不变量是什么意思?为什么需要添加"断言错误;"上述功能块中的语句,由于存在return语句,控件将无法到达。 渴望听到答案。

0 个答案:

没有答案