今日はjavaのアサーションという技術について見ていきたい。

C言語の開発の時、デバッグをかければ特定の行まで無事実行できているかどうかを簡単に確認することができた。javaでこの様なことを可能にする技術がアサーションである。

以下にアサーション(assert)を使ったソースコードを示す。


public class ExAssert {
public static void main(String[] args) {
ExAssert object1 = new ExAssert();
object1.calNum(5, 10);
}

void calNum(int x, int y) {
int z = 0;
//(1)事前条件
assert x > 0 && y > 0:"xまたはyが0以下です。";

//(2)変数xを変数y回、加算
for (int i = 0; i < y; i++) {
z = z + x;
}

//(3)事後条件
assert z >= x && z >= y:"zがxまたはyより小さい値です。";

System.out.println(z);
}
}


参考HP→http://www.javaroad.jp/java_exception4.htm  

(「javaの道」はjavaを勉強していくうえで初心者にもわかりやすい丁寧な説明が豊富です。オススメ ! )

このソースのfor文をコメントアウトするとassert(19行目)に該当し実行される。

assert文にかかれば、どの行がassertを実行させる要因になっているのかも行数で示してくれる。

以下にコメントアウトしたときの実行結果を示す。


Exception in thread "main" java.lang.AssertionError: zがxまたはyより小さい値です。
at ExAssert.calNum(ExAssert.java:19)
at ExAssert.main(ExAssert.java:4)


今後assertをうまく使い効率的にjavaでの開発をしていけたらと思っています^^