●assertステートメントとは
①J2SE1.4からの要素
②アサーション機能を実現するものとしてJava の言語仕様に加えられたもの
※アサーション(assertion)
→ソフトウェアが正しく動作することをより確実にするために使われる手法
→「各地点でこの条件が成立しているはず」
という検証用のコードをそれぞれの箇所に配置し違反を自動で検出
●assertステートメントの形式
/*
*exp1が検証されるべき条件を記述するboolean 型の式
*falseの場合アサーション違反となり,エラーAssertionErrorをスロー
*/
assert exp1;
/*
*exp2はexp1の値がfalseとなってAssertionErrorオブジェクトが作られるときの
*コンストラクタへのパラメタ(String)
*/
assert exp1 : exp2;
●assertステートメントの使用例
assertステートメント使用前
---------------------------------------------
if( sw == 0 ){
aaaa();
} else { //ここでsw > 0であるはず
bbbb();
}
---------------------------------------------
assertステートメント使用後
---------------------------------------------
if( sw == 0 ){
aaaa();
} else {
//sw > 0がfalseのとき「sw = swの値」を表示
assert sw> 0 : "sw ="+sw;
bbbb();
}
---------------------------------------------
AssertionErrorが出た場合のエラー
---------------------------------------------
AssertionError: sw = swの値
---------------------------------------------
●アサーションの種類
①事前条件
呼び出し元がメソッドに渡す引数が満たすべき条件
メソッドを呼び出されたときに引数をアサートする
②事後条件
メソッドの処理結果が満たすべき条件
メソッドが終わるときに処理結果をアサートする
③クラス不変条件
オブジェクトの内部状態が適切に保たれていることを示す条件
クラスの参照する場合に変数が変えられていないか、関数の前後でアサートする
●参考サイト
http://www.ipa.go.jp/security/awareness/vendor/programmingv1/a03_05.html
[0回]
PR