例外について
例外って基本的なこと。だから、まとめとこう思います。
例外はリターンコードに基づくエラーハンドリングより数多くの利点がある。
OOPにおいて例エラーハンドリングする手段は例外のみで、他の手段は使うべきではない。
というのも、.Netの世界では昔の文法が残っているせいで、
On Error Go To Error
的な処理でエラーコードを返すこともできる。リターンコードは廃止して、すべて例外で処理すべきだ。
リターンコードの場合、無視される可能性が非常に高い。というか、無視される。
Microsoftのクラスライブラリの設計ガイドラインに以下の記述がある。
エラーコードを返却すべきではありません。例外がフレームワーク内でエラーを報告する主要な手段です。
正しくハンドリング出来なければ、何もしない。
.Netの場合、検査例外がない。
そのため、意図的に例外をcatchしなければ、上に伝搬される。
例外をcatchする必要がある場合、catchした例外を適切に処理する。
何をもって適切か分からなければ、catchせずそのままthrowすべきだ。
最悪なのは、catchして握りつぶすこと。
そんなことする人はいない!と言われそうだが、名のしれたオープンソース内でも握りつぶしていることがあるそうだ。
よくあるのは暫定対応で握りつぶして、すっかり忘れてしまうパターンだろう。
catchした例外はすべて正しく対処。できなければ、上に伝搬させる。