NonSoft

例外処理(System.Exception)と例外一覧の
サンプル(C#.NET)


 サンプル(ソース/コード)
例外処理(System.Exception)と個別例外(System.Exceptionの派生クラス)を定義するサンプル(C#.NET)です。

全ての例外をキャッチするサンプルと個別の例外をキャッチするサンプルに分けて記述しています。

このサンプルは、C#.NET標準の例外一覧として確認する時の参考にもなると思います。

VB.NETの例外処理(System.Exception)のサンプルはこちらです。
例外処理(System.Exception)と例外一覧のサンプル(VB.NET)

★全ての例外をキャッチするサンプル
// 全ての例外をキャッチするサンプル
try
{
    // 例外が発生しない時に処理する正常時のコード
}
catch(System.Exception ex)
{
    // 例外が発生した時に処理されるコード
    // (アプリケーションの実行中に発生するエラーを表します)
}
finally
{
    // 例外が発生しても発生しなくても、最後に処理されるコード
}

★個別の例外をキャッチするサンプル
// ABC順に定義したサンプルになっています。(実際に使用する際は定義する順番に注意)
try
{
    // 例外が発生しない時に処理する正常時のコード
}
catch (System.AccessViolationException ex)
{
    // 保護されたメモリの読み取りまたは書き込みが試行されたときにスローされる例外。
}
catch (System.AppDomainUnloadedException ex)
{
    // アンロードされたアプリケーション ドメインにアクセスしようとするとスローされる例外。
}
catch (System.ApplicationException ex)
{
    // 致命的ではないアプリケーション エラーが発生した場合にスローされる例外。
}
catch (System.ArgumentException ex)
{
    // メソッドに渡された引数のいずれかが無効な場合にスローされる例外。
}
catch (System.ArgumentNullException ex)
{
    // null 参照 (Visual Basic では Nothing) を有効な引数として受け付けないメソッドに 
    // null 参照を渡した場合にスローされる例外。
}
catch (System.ArgumentOutOfRangeException ex)
{
    // 呼び出されたメソッドで定義されている許容範囲外の値が引数として渡された場合に
    // スローされる例外。
}
catch (System.ArithmeticException ex)
{
    // 算術演算、キャスト演算、または変換演算におけるエラーが原因でスローされる例外。
}
catch (System.ArrayTypeMismatchException ex)
{
    // 間違った型の要素を配列に格納しようとするとスローされる例外。
}
catch (System.BadImageFormatException ex)
{
    // DLL または実行可能プログラムのファイル イメージが無効である場合にスローされる例外。
}
catch (System.CannotUnloadAppDomainException ex)
{
    // アプリケーション ドメインをアンロードしようとして失敗した場合にスローされる例外。
}
catch (System.ContextMarshalException ex)
{
    // コンテキストの境界を越えてオブジェクトをマーシャリングしようとして失敗した場合に
    // スローされる例外。
}
catch (System.DataMisalignedException ex)
{
    // データの単位が、データ サイズの倍数ではないアドレスから読み込まれたり、
    // アドレスに書き込まれたりしたときにスローされる例外。このクラスは継承できません。
}
catch (System.DivideByZeroException ex)
{
    // 整数値または小数値を 0 で除算しようとするとスローされる例外。
}
catch (System.DllNotFoundException ex)
{
    // DLL インポートで指定した DLL が見つからない場合にスローされる例外。
}
catch (System.DuplicateWaitObjectException ex)
{
    // 同期オブジェクトの配列に 1 つのオブジェクトが 2 回以上現れた場合にスローされる例外。
}
catch (System.EntryPointNotFoundException ex)
{
    // 開始メソッドが指定されていないことが原因でクラスの読み込みに失敗した場合に
    // スローされる例外。
}
catch (System.ExecutionEngineException ex)
{
    // 共通言語ランタイムの実行エンジンに内部エラーが発生した場合にスローされる例外。
    // このクラスは継承できません。
}
catch (System.FieldAccessException ex)
{
    // クラス内部のプライベート フィールドまたはプロテクト フィールドに対して無効なアクセスが
    // 試行された場合にスローされる例外。
}
catch (System.FormatException ex)
{
    // 引数の書式が、呼び出されたメソッドのパラメータの仕様に一致していない場合に
    // スローされる例外。
}
catch (System.IndexOutOfRangeException ex)
{
    // 配列の境界外のインデックスを使用して配列の要素にアクセスしようとした場合に
    // スローされる例外。このクラスは継承できません。
}
catch (System.InsufficientMemoryException ex)
{
    // この例外は、使用可能なメモリが十分に残っているかどうかのチェックで、
    // 要件が満たされなかった場合にスローされます。このクラスは継承できません。
}
catch (System.InvalidCastException ex)
{
    // 無効なキャストまたは明示的な型変換に対してスローされる例外。
}
catch (System.InvalidOperationException ex)
{
    // オブジェクトの現在の状態に対して無効なメソッド呼び出しが行われた場合に
    // スローされる例外。
}
catch (System.InvalidProgramException ex)
{
    // プログラムに無効な MSIL (Microsoft intermediate language) またはメタデータが
    // 含まれている場合にスローされる例外。通常、これはプログラムを生成した
    // コンパイラのバグを示します。
}
catch (System.MemberAccessException ex)
{
    // クラス メンバにアクセスしようとして失敗した場合にスローされる例外。
}
catch (System.MethodAccessException ex)
{
    // クラス内部のプライベート メソッドまたはプロテクト メソッドに対して無効なアクセスが
    // 試行された場合にスローされる例外。
}
catch (System.MissingFieldException ex)
{
    // 存在しないフィールドに動的にアクセスしようとした場合にスローされる例外。
}
catch (System.MissingMemberException ex)
{
    // 存在しないクラス メンバに動的にアクセスしようとした場合にスローされる例外。
}
catch (System.MissingMethodException ex)
{
    // 存在しないメソッドに動的にアクセスしようとした場合にスローされる例外。
}
catch (System.MulticastNotSupportedException ex)
{
    // いずれか一方のオペランドが null 参照 (Visual Basic の場合は Nothing) でない場合は
    // 組み合わせることができない 2 つのデリゲート型のインスタンスを組み合わせようとした
    // 場合にスローされる例外。このクラスは継承できません。
}
catch (System.NotFiniteNumberException ex)
{
    // 浮動小数点値が正の無限大、負の無限大、または非数 (NaN) の場合にスローされる例外。
}
catch (System.NotImplementedException ex)
{
    // 要求されたメソッドまたは操作が実装されない場合にスローされる例外。
}
catch (System.NotSupportedException ex)
{
    // 呼び出されたメソッドがサポートされていない場合、または呼び出された機能を備えていない
    // ストリームに対して読み取り、シーク、書き込みが試行された場合にスローされる例外。
}
catch (System.NullReferenceException ex)
{
    // null オブジェクト参照を逆参照しようとした場合にスローされる例外。
}
catch (System.OperationCanceledException ex)
{
    // この例外は、スレッドによって実行されている操作がキャンセルされたときに、
    // そのスレッドでスローされます。
}
catch (System.OutOfMemoryException ex)
{
    // プログラムの実行を継続するためのメモリが不足している場合にスローされる例外。
}
catch (System.OverflowException ex)
{
    // checked コンテキストで、算術演算、キャスト演算、
    // または変換演算の結果オーバーフローが発生した場合にスローされる例外。
}
catch (System.PlatformNotSupportedException ex)
{
    // 特定のプラットフォームで機能が実行されない場合にスローされる例外。
}
catch (System.RankException ex)
{
    // 間違った次元数の配列がメソッドに渡された際にスローされる例外。
}
catch (System.StackOverflowException ex)
{
    // 保留状態のメソッド呼び出しが多くなりすぎ、
    // 実行スタックがオーバーフローした場合にスローされる例外。このクラスは継承できません。
}
catch (System.SystemException ex)
{
    // 名前空間内の定義済み例外の基本クラスを定義します。
}
catch (System.TimeoutException ex)
{
    // プロセスまたは操作用に割り当てられた時間が経過したときにスローされる例外。
}
catch (System.TypeLoadException ex)
{
    // 型の読み取りエラーが発生したときにスローされる例外。
}
catch (System.TypeUnloadedException ex)
{
    // アンロードされたクラスにアクセスしようとした場合にスローされる例外。
}
catch (System.UnauthorizedAccessException ex)
{
    // オペレーティング システムが I/O エラーまたは特定の種類のセキュリティ エラーのために
    // アクセスを拒否する場合、スローされる例外。
}
catch (System.Collections.Generic.KeyNotFoundException ex)
{
    // コレクション内の要素にアクセスするために指定されたキーが、
    // コレクションのいずれのキーとも一致しない場合にスローされる例外。
}
catch (System.IO.DirectoryNotFoundException ex)
{
    // ファイルまたはディレクトリの一部が見つからない場合にスローされる例外。
}
catch (System.IO.DriveNotFoundException ex)
{
    // 使用できないドライブまたは共有にアクセスしようとするとスローされる例外。
}
catch (System.IO.EndOfStreamException ex)
{
    // ストリームの末尾を越えて読み込もうとしたときにスローされる例外。
}
catch (System.IO.FileLoadException ex)
{
    // マネージ アセンブリが見つかったが、読み込むことができない場合にスローされる例外。
}
catch (System.IO.FileNotFoundException ex)
{
    // ディスク上に存在しないファイルにアクセスしようとして失敗したときにスローされる例外。
}
catch (System.IO.IOException ex)
{
    // I/O エラーが発生したときにスローされる例外。
}
catch (System.IO.PathTooLongException ex)
{
    // パス名またはファイル名がシステム定義の最大長よりも長いときにスローされる例外。
}
catch (System.IO.IsolatedStorage.IsolatedStorageException ex)
{
    // 分離ストレージの操作で障害が発生するとスローされる例外。
}
catch (System.Reflection.AmbiguousMatchException ex)
{
    // メンバへのバインド時に、バインディング基準に一致するメンバが複数ある場合に
    // スローされる例外。このクラスは継承できません。
}
catch (System.Reflection.CustomAttributeFormatException ex)
{
    // カスタム属性のバイナリ形式が無効な場合にスローされる例外。
}
catch (System.Reflection.InvalidFilterCriteriaException ex)
{
    // 使用するフィルタの種類に対してフィルタ基準が無効な場合に
    // System.Type.FindMembers(System.Reflection.MemberTypes,System.Reflection.BindingFlags,
    // System.Reflection.MemberFilter,System.Object)でスローされる例外。
}
catch (System.Reflection.TargetException ex)
{
    // 無効なターゲットを呼び出そうとするとスローされる例外を表します。
}
catch (System.Reflection.TargetParameterCountException ex)
{
    // 呼び出し時に指定されたパラメータの数が、必要なパラメータ数と異なる場合に
    // スローされる例外。このクラスは継承できません。
}
catch (System.Resources.MissingManifestResourceException ex)
{
    // 適切なサテライト アセンブリがないために、ニュートラル カルチャ リソースが
    // 必要な場合に、メイン アセンブリにニュートラル カルチャ リソースが含まれていないと
    // スローされる例外。
}
catch (System.Resources.MissingSatelliteAssemblyException ex)
{
    // ニュートラル カルチャのリソースのサテライト アセンブリが見つからない場合に
    // スローされる例外。
}
catch (System.Runtime.InteropServices.COMException ex)
{
    // COM メソッドの呼び出しによって、認識されない HRESULT が返された場合に
    // スローされる例外です。
}
catch (System.Runtime.InteropServices.InvalidComObjectException ex)
{
    // 無効な COM オブジェクトを使用したときにスローされる例外です。
}
catch (System.Runtime.InteropServices.InvalidOleVariantTypeException ex)
{
    // マネージ コードにマーシャリングできないバリアント型の引数が見つかった場合に、
    // マーシャラによってスローされる例外。
}
catch (System.Runtime.InteropServices.MarshalDirectiveException ex)
{
    // マーシャラが、サポートしていないSystem.Runtime.InteropServices.MarshalAsAttributeを
    // 検出した場合にスローする例外。
}
catch (System.Runtime.InteropServices.SafeArrayRankMismatchException ex)
{
    // 着信 SAFEARRAY のランクが、マネージ シグネチャで指定したランクと一致しない場合に
    // スローされる例外。
}
catch (System.Runtime.InteropServices.SafeArrayTypeMismatchException ex)
{
    // 着信 SAFEARRAY の型が、マネージ シグネチャで指定した型と一致しない場合に
    // スローされる例外。
}
catch (System.Runtime.InteropServices.SEHException ex)
{
    // 構造化例外ハンドラ (SEH: Structured Exception Handler) エラーを表します。
}
catch (System.Runtime.Remoting.RemotingException ex)
{
    // リモート処理中に何かが失敗すると、スローされる例外。
}
catch (System.Runtime.Remoting.RemotingTimeoutException ex)
{
    // 以前に指定した期間内にサーバーまたはクライアントに到達できないと、
    // スローされる例外。
}
catch (System.Runtime.Remoting.ServerException ex)
{
    // クライアントが、例外をスローできない非 .NET Framework アプリケーションに
    // 接続する場合に、クライアントにエラーを通知するためにスローされる例外。
}
catch (System.Runtime.Serialization.SerializationException ex)
{
    // シリアル化中または逆シリアル化中にエラーが発生するとスローされる例外。
}
catch (System.Security.HostProtectionException ex)
{
    // ホスト リソースの拒否が検出されたときにスローされる例外です。
}
catch (System.Security.SecurityException ex)
{
    // セキュリティ エラーが検出されたときにスローされる例外。
}
catch (System.Security.VerificationException ex)
{
    // セキュリティ ポリシーでコードをタイプ セーフにする必要があり、
    // 検証プロセスでコードがタイプ セーフかどうかを検証できないときにスローされる例外。
}
catch (System.Security.XmlSyntaxException ex)
{
    // XML 解析で構文エラーが存在する場合にスローされる例外。このクラスは継承できません。
}
catch (System.Security.AccessControl.PrivilegeNotHeldException ex)
{
    // System.Security.AccessControl名前空間内のメソッドが、
    // そのメソッドに設定されていない特権を有効にしようとするとスローされる例外。
}
catch (System.Security.Cryptography.CryptographicException ex)
{
    // 暗号操作中にエラーが発生すると、スローされる例外。
}
catch (System.Security.Cryptography.CryptographicUnexpectedOperationException ex)
{
    // 暗号操作中に予期しない操作が発生するとスローされる例外。
}
catch (System.Security.Policy.PolicyException ex)
{
    // ポリシーでコードの実行を禁止するとスローされる例外。
}
catch (System.Security.Principal.IdentityNotMappedException ex)
{
    // ID を既知の ID に割り当てることができないプリンシパルの例外を表します。
}
catch (System.Text.DecoderFallbackException ex)
{
    // デコーダ フォールバック操作が失敗したときにスローされる例外。
    // このクラスは継承できません。
}
catch (System.Text.EncoderFallbackException ex)
{
    // エンコーダ フォールバック操作が失敗したときにスローされる例外。
    // このクラスは継承できません。
}
catch (System.Threading.AbandonedMutexException ex)
{
    // スレッドが、別のスレッドが解放せずに終了することによって放棄した
    // System.Threading.Mutexオブジェクトを取得したときにスローされる例外。
}
catch (System.Threading.SynchronizationLockException ex)
{
    // 指定した Monitor でロックを所有していることが呼び出し元の条件となるメソッドを、
    // そのロックを所有していない呼び出し元が呼び出した場合にスローされる例外です。
}
catch (System.Threading.ThreadInterruptedException ex)
{
    // System.Threading.Threadが待機状態のときに中断されるとスローされる例外。
}
catch (System.Threading.ThreadStateException ex)
{
    // メソッドの呼び出しでSystem.Threading.Threadが
    // 無効なSystem.Threading.Thread.ThreadStateである場合は、例外がスローされます。
}
catch (System.Threading.WaitHandleCannotBeOpenedException ex)
{
    // 存在しないシステム ミューテックスまたはシステム セマフォを開こうとしたときに
    // スローされる例外。
}
finally
{
    // 例外が発生しても発生しなくても、最後に処理されるコード
}