突発的にメモ 例外クラスまとめ

.NET Framework によって提供される例外の中で、私がよく使用する例外についてまとめ。

主にテスト・デバッグを楽にするために使っているものです。
InvalidOperationException
クラスの状態が不適切な場合に投げる例外。状態を持つクラスがありえない状態でメッセージを受け取った場合投げるようにしておくと、テスト時のバグ発見に役立つ。このエラーが出る場合は基本的にコーディングミスorクラス間I/Fのすり合わせミス
ArgumentException
入力された引数が予想の範囲を超えているものだった場合に投げる例外。引数を厳密にチェックし、NGな引き数の入力はコーディングミスと扱いたいときに便利。
ArgumentNullException
上記ArgumentExceptionとにているが、入力されたオブジェクトのインスタンスがnullの場合に投げる例外。ArgumentExceptionは引数がNullではないが間違っている場合に投げられる例外。ArgumentNullExceptionは引数がNullの場合に投げられる。どちらも、変な引数わたすのはコーディングミスと扱いたいときに便利。
NotSupportedException
呼び出されたメソッドがサポートしていない場合に投げられる例外。状態マシンを持つクラスで、ありえない操作を行われた場合にこの例外を投げておくとわかりやすいかも知れない。(本来の用途とは微妙に違う気もしますが。。。)
NotImplementedException
未実装のメソッドや分岐部分から、とりあえず投げておくと、後でユニットテストした場合に、実装漏れに気づきやすくなる。ただし、ある程度ユニットテストをしていないと、リリース時までに気づけないこともあり、リリース後にアプリが突然落ちるということも発生するという諸刃の剣。この使い方は素人にはオススメできないのかもしれない。