.Netでは要求に応えられない状態の通知方法として「例外」という仕組みがとられています。その例外の中でも特に覚えておきたい例外を独断と偏見で選びました。
この名前空間にあるものは.Netの中でも中心に位置する例外です。いくつか、DLLや、型に関する通常使わないものも混じっています。
System.ApplicationException //致命的でないアプリケーションエラーが発生した。 System.SystemException //System名前空間内の定義済例外の基本クラス。 AppDomainUnloadedException //アンロードされたアプリケーションドメインにアクセスしようとした。 ArgumentException //メソッドに渡された引数のいずれかが無効。 ArgumentNullException //null参照を有効な引数として受付にメソッドにnull参照を渡した。 ArgumentOutOfRangeException //呼び出されたメソッドで定義されている許容範囲外の値が引数として渡された DuplicateWaitObjectException //同期オブジェクトの配列に1つのオブジェクトが2回以上現れた。 ArithmeticException //算術演算、キャスト演算、又は変換演算におけるエラーが原因でスローされる。 DivideByZeroException //整数値又は小数値を0で除算しようとするとスローされる例外。 NotFiniteNumberException //浮動小数点値が星の無限大、負の無限大、又は非数(NaN)の場合にスローされる。 OverflowException //checkedコンテキストで、算術演算、キャスト演算、 //又は変換演算の結果オーバーフローが発生した。 ArrayTypeMismatchException //間違った型の要素を配列に格納しようとした。 BadImageFormatException //DLL又は実行プログラムのファイルイメージが無効である。 CannotUnloadAppDomainException //アプリケーションドメインをアンロードしようとして失敗した。 ContextMarshalException //コンテキストの境界を越えてオブジェクトをマーシャリングしようとして失敗した。 ExecutionEngineException //共通言語ランタイムの実行エンジン内部にエラーが発生した。 FormatException //引数の書式が呼び出されたパラメータの仕様に一致していない。 UriFormatException //無効なURIが検出された場合にスローされる。 IndexOutOfRangeException //配列の境界外のインデックスを使用して配列の要素にアクセスしようとした。 InvalidCastException //無効なキャスト又は明示的な型変換に対してスローされる。 InvalidOperationException //オブジェクトの現在の状態に対して無効なメソッド呼び出しが行われた。 ObjectDisposedException //破棄されたオブジェクトで操作が実行されるとスローされる。 InvalidProgramException //プログラムに無効なMSIL又はメタデータが含まれている。 MemberAccessException //クラスメンバにアクセスしようとして失敗した。 FieldAccessException //クラス内部のプライベートメンバ又はプロテクトフィールドに対して //無効なアクセスが試行された。 MethodAccessException //クラス内部のプライベートメソッド又はプロテクトメソッドに対して //無効なアクセスが試行された。 MissingMemberException //存在しないクラスメンバに動的にアクセスしようとした。 MissingFieldException //存在しないフィールドに動的にアクセスしようとした。 MissingMethodException //存在しないメソッドに動的にアクセスしようとした。 MulticastNotSupportedException //MulticastDelegate型ではなくDelegate型に基づいて2つのデリゲートを結合しようとした NotImplementedException //要求されたメソッド又は操作が実装されない。 NotSupportedException //呼び出されたメソッドがサポートされていない場合、 //又は呼び出された機能を備えていないストリームに対して //読みとり、シーク、書き込みが試行された場合にスローされる例外。 PlatformNotSupportedException //特定のプラットフォームで機能が実行されない場合にスローされる。 NullReferenceException //nullオブジェクトの参照をしようとした。 OutOfMemoryException //プログラムを継続するためのメモリが不足している。 RankException //間違った次元の配列がメソッドに渡された際にスローされる。 StackOverflowException //保留状態のメソッド呼び出しが多くなりすぎ、実行スタックがオーバーフローした。 TypeInitializationException //クラス初期化子によってスローされた例外をラップするラッパーとしてスローされる TypeLoadException //型の読みとりエラーが発生した。 DllNotFoundException //DLLインポートで指定したDLLが見つからない。 EntryPointNotFoundException //開始メソッドが指定されていない事が原因でクラスの読み込みに失敗した。 TypeUnloadedException //アンロードされたクラスにアクセスしようとした。 UnauthorizedAccessException //オペレーティングシステムがI/Oエラー又は特定の種類の //セキュリティエラーのためにアクセスを拒否する場合、スローされる。
見た事のある例外も多々あると思います。また、これらの例外の中には特にコードを書かなくても勝手に投げられるものも多いです。
System名前空間内でも特に次にあげる例外はよく使うと思います。
ArgumentException //メソッドに渡された引数のいずれかが無効。 ArgumentNullException //null参照を有効な引数として受付にメソッドにnull参照を渡した。 ArgumentOutOfRangeException //呼び出されたメソッドで定義されている許容範囲外の値が引数として渡された InvalidOperationException //オブジェクトの現在の状態に対して無効なメソッド呼び出しが行われた。 ObjectDisposedException //破棄されたオブジェクトで操作が実行されるとスローされる。 NotImplementedException //要求されたメソッド又は操作が実装されない。 NotSupportedException //呼び出されたメソッドがサポートされていない場合、 //又は呼び出された機能を備えていないストリームに対して //読みとり、シーク、書き込みが試行された場合にスローされる例外。 RankException //間違った次元の配列がメソッドに渡された際にスローされる。
引数に関するもの、状態に関するもの、機能に関するもの。それらについての例外としてはこれらが妥当でしょう。覚えておくと、互換性の高いコードが書けると思います。