消えてなくなれよ >オブジェクト指向 part.2
■ このスレッドは過去ログ倉庫に格納されています
0512デフォルトの名無しさん
2009/05/23(土) 04:47:38a();
v = f();
b();
c(v);
一見正しくみえるが、f()が例外を飛ばすのを忘れていると
例外自体は他でキャッチするのでテストはキチンと失敗するにも関わらず
f()が失敗したのに誤ってa()したり、誤ってb()しなかったりする
OO的に
Any f() {
if (!hoge()) reterun new Error("Can't hoge!");
return fuga();
}
のように正常な経路でメッセージを戻せばその種の不整合問題は発生しづらい
エラー処理を忘れたらc(v)の内部でとまるので原因はすぐわかる
実際はc(v)内部で引数のチェックくらいするからエラーを記録して何もしないという選択もできる
例外投げたらそこで終了だよ
■ このスレッドは過去ログ倉庫に格納されています