使用断言添加前置条件和后置条件

时间:2015-10-29 20:12:33

标签: java

这是我正在进行的作业。其中一个要求是向SomeClass添加前置条件和后置条件。我还在学习前后条件,但更重要的是,我该如何实现它们呢?

原始赋值问题在这里:“编写一个程序,显示构造函数将有关构造函数失败的信息传递给异常处理程序。定义类SomeClass,它在构造函数中抛出异常。您的程序应该尝试创建SomeClass类型的对象并捕获从构造函数抛出的异常。

org.openrdf.query.algebra.evaluation.function.Function

1 个答案:

答案 0 :(得分:0)

assert语句会在失败时抛出AssertionError。 但是,必须使用JVM参数手动启用assert语句, 因为它们在生产代码中默认关闭。 这不适合你的任务。

如果您的要求是抛出AssertionError,那么您可以明确地抛出它:

public SomeClass (int a, int b) { 
    if (a < 0 || a > 10) {
        throw new AssertionError("the first param is out of valid range: " + a);
    }
    if (b < 0 || b > 10) {
        throw new AssertionError("the second param is out of valid range: " + b);
    }

    // at this point the pre-conditions have been validated
    this.a = a;
    this.b = b;
}

我省略了throws子句,因为AssertionError不是一个经过检查的异常,不需要声明它。

最后,在您的代码中,即使参数正确,throw new Exception("You've got an error!"); at作为构造函数的最后一个语句也将始终运行。所以那句话在那里没有任何意义。