assert2 plug-in

JDK1.4 の assert 文をプリプロセッサでエミュレートする assert2 plug-in が、 標準で mjc コマンドに組み込まれています。

この assert 文は、引数の条件式が false だった場合は、 標準エラー出力に assert マクロの位置の情報を出力した後、 java.lang.Error を throw します。

assert 文には1引数のものと2引数のものがあります。

        Statement:
                assert exp;
                assert exp : exp;

1引数の assert 文は、 exp が比較演算子である場合、 両辺の値をメッセージに出してくれます。例えば、

      double d = 10;
      assert(d / 2 > d + 2);

を実行すると、次のようなエラーメッセージが出ます。

java.lang.Error: Assertion failed : (5.0 > 12.0) is not true.

2引数の assert 文は、2つめの引数をメッセージに使います。 2つめの引数は、1つめの引数が false であった時のみ評価されます。 例えば、

    int y = 0;
    assert y != 0 : "Zero divide.";

を実行すると、次のようなエラーメッセージが出ます。

java.lang.Error: Assertion failed : Zero divide.

コンパイル時に NDEBUG という property の値を true にすることで、 assert マクロを空文に展開するようにできます。例:

 mjc -J-DNDEBUG=true Tutorial.java 
Preprocessing phase.
Compiling phase.
Done.
% mj t.assert
assert test.


mj-logo
Last updated: Dec 19 17:30:14 2001