throwsエスカレーション
J系言語ではきちんとエラー処理していない小さなメソッドに対して、例外モデルでエラー処理させようとすると、throwsのエスカレーションが発生する。
throwsのエスカレーションが発生すると、そのthrowsを呼び出し側でも再スローするように設定して回らないといけない。
C#やVBではthrowsモデルを採用せずに、どのような例外を送出するかはドキュメント任せである。
C#登場当初はthrowsが欲しいという意見も多かったが最近はあまり聞かれません。
ちなみにCheckStyleっていうJavaのコーディング規約チェッカみたいなものでは
http://www003.upp.so-net.ne.jp/kaz-taka/checkstyle/4.1/config_design.html
>throws ステートメントを指定した数(デフォルト = 1)に制限します。
>メソッドがあまりにも多くの異なる例外をスローするよう宣言することは その例外の処理を煩わしくさせ、(Exception) をキャッチするような まずいプログラミングプラクティスにつながってしまいます。
なんてことまで書いてあります。
throwsを1つに制限するのはそのメソッドの中での多様な例外を否定しているわけで、そういう意味でも.NETのライブラリと好対照だ。
#なんせ7つとか例外が出ますよと書いてあるのも普通だし
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5B%BD%A1%B6%B5%CF%C0%C1%E8%2F%A4%CA%A4%BCthrows()%A4%AC%A4%CA%A4%A4%A4%CE%A4%AB%5D%5D
こんなところもある。
ソースとして正しいとか、設計として書くあるべしみたいなものも大事だけど、変更箇所が級数的に増えるという保守の問題も検討すべき。
#んでアドホックに直しちゃうとか(^^;;;;