スレッドメモ
MLやNewsのスレッドをメモする試み。
2005-08-21 (日)
◆ [oosquare-ml] 戻り値で異常系な結果を返すべきなのか,例外処理でお知恵拝借
[04653] Tacchang (8/1)
一方,マイクロソフト社のガイドラインによると「File.Open コマンドは、ファイルが見つからない場合に null 参照を返す」とあり,戻り値でエラーを返すような設計になるようです.私は,この事象の場合,上記の分割で(1)キャッチされる例外が妥当と思っています.その根拠は,
・戻り値(ひとつの変数)にはひとつの意味を持たせるべきで,FileStreamとエラーという2つの意味を持たせるべきでない.
・戻り値にエラーの意味を持たせると,本来例外が設けられた理由(私の認識) 「正常系と異常系を分けてコーディングできるように」に合致しない
マイクロソフト社のガイドラインの冒頭に「例外を発生させる結果となるすべてのコード パスには、例外をスローすることなく正常に処理を続行できるかどうかを確認するためのメソッドを用意する必要がある」とあります.これでは,コードが見づらくなるコードを書けと言っているようでよろしくない,と考えます.いかがでしょうか.
[04654] seraphy (8/21)
つまり、検査例外は依存関係がはっきりした堅牢で強固に結合したソリッドなコードを書くには適していると思いますが、最近のような依存関係を実行時まで引き伸ばす風潮や取替え可能な疎結合なコンポーネント指向においては、かならずしも、うまく機能しない、ということだと思います。
[04659] Masashi Umezawa (8/23)
"Thinking in Java"の著者であるBruce Eckelさんが、JavaのChecked Exceptionって本当にいるのか? と、疑問を呈していますね。
「必要」派からの転向なので面白みがあります。
http://www.mindview.net/Etc/Discussions/CheckedExceptions上記ページにもリンクがありますが、C#の設計に関わっているEric Gunnersonの意見も参考になるでしょう。
http://discuss.develop.com/archives/wa.exe?A2=ind0011A&L=DOTNET&P=R32820Wikipediaにも詳しい記述があります。
http://en.wikipedia.org/wiki/Exceptionご参考まで。私自身もChecked Exceptionは不要かなーと思っています。
[04663] FUKUDA, Fumiki (8/23)
下位層ではエラーの検出はできるけど対処のしようがない と上位層ではエラーの対処はできるけど検出のしようがない とを(中間層をいくつまたごうが)カッコよく繋ぐからくりが例外だと思ってます僕は。
この問題は好みの問題と言い切ってもいいのではないでしょうか?