次のコードがあるとします。
public class MainClass {
public static void main(String[] args) {
System.out.println(sumNumbers(10, 10));
}
//@requires a >= 10;
//@ensures \result < 0;
public static int sumNumbers(int a, int b) {
return a+b;
}
}
私はここで2つのことをすることができます:
コード コントラクトを使用します (この場合、コメントの内容)。sumNumbers が実行されて 10 未満の場合、すぐに例外がスローされます (あまり説明的ではないようですが)。
Exception in thread "main" org.jmlspecs.jmlrac.runtime.JMLInternalNormalPostconditionError: by method MainClass.sumNumbers
at MainClass.sumNumbers(MainClass.java:500)
at MainClass.internal$main(MainClass.java:9)
at MainClass.main(MainClass.java:286)
また...
例外をスローします。例外は、必要に応じて説明することができます。また、関数の最後をチェックインして、事後条件が true かどうかを確認します。
ここではどちらを使用しますか?なぜですか?