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.
Last updated:
Dec 19 17:30:14 2001
|