C#のすべての例外の基本クラスとは?System.Exceptionクラスの階層を解説
C#における例外の基本クラスとは
C#の例外処理において、すべての例外クラスの最上位に位置するのがSystem.Exceptionクラスです。このクラスから派生する主要な例外クラスとして、System.SystemExceptionクラスとSystem.ApplicationExceptionクラスの2つがあります。
System.SystemExceptionクラスは、.NETランタイムが事前に定義しているすべてのシステム例外(定義済み例外)の基本クラスであり、プログラムの実行中に発生するさまざまなエラーの多くは、このクラスから派生しています。
一方、System.ApplicationExceptionクラスは、アプリケーションプログラムが発生させる例外を扱うためのクラスです。そのため、開発者が独自の例外を定義する際には、従来このクラスから派生させることが推奨されてきました。ただし、現在の.NETでは、カスタム例外は直接System.Exceptionから派生させることが推奨されている点に注意してください。
System.SystemExceptionから派生する主な例外クラス一覧
以下の表は、基本クラスSystem.SystemExceptionの配下にある代表的な例外クラスと、それぞれが対応するエラーの種類をまとめたものです。
| No. | 例外クラスと説明 |
|---|---|
| 1 | System.IO.IOException I/O(入出力)処理で発生するエラーを扱います。 |
| 2 | System.IndexOutOfRangeException メソッドが配列の範囲外のインデックスを参照したときに発生するエラーを扱います。 |
| 3 | System.ArrayTypeMismatchException 格納しようとした型が配列の型と一致しない場合に発生するエラーを扱います。 |
| 4 | System.NullReferenceException nullオブジェクトを参照したときに発生するエラーを扱います。 |
| 5 | System.DivideByZeroException ゼロによる除算を行ったときに発生するエラーを扱います。 |
| 6 | System.InvalidCastException 型キャストの実行中に発生するエラーを扱います。 |
| 7 | System.OutOfMemoryException 空きメモリが不足したときに発生するエラーを扱います。 |
| 8 | System.StackOverflowException スタックオーバーフローが発生したときのエラーを扱います。 |
まとめ
C#の例外階層では、System.Exceptionがルートとなり、その下にSystemExceptionとApplicationExceptionが位置します。これらの例外クラスの仕組みを理解しておくことで、try-catchブロックを使った適切なエラーハンドリングや、状況に応じた独自例外クラスの設計がしやすくなります。
-
C#におけるクラスのデフォルトアクセス修飾子とは?internalの基本を解説
C#では、クラスやメンバにアクセス修飾子を明示的に指定しなかった場合、デフォルトのアクセスレベルはinternal(内部)になります。internalアクセス指定子が付いたクラスやメンバは、同じアセンブリ(同一プロジェクト・同一EXE/DLL)内にある他のクラスやメソッドから自由にアクセスできます。ただし、アセンブリの外部からは参照できないため、ライブラリ内部でのみ使用する型やメンバを定義したい場合に適しています。言い換えると、internalメンバは「そのメンバが定義されているアプリケーション(アセンブリ)内であれば、どのクラス・どのメソッドからでもアクセス可能」ということになります。int
-
C#のカスタム例外とは?ユーザー定義例外の作成方法を実例で解説
他のプログラミング言語と同様に、C#でも独自の例外クラス(ユーザー定義例外)を簡単に作成できます。ユーザー定義例外クラスは、標準ライブラリの Exception クラスを継承して定義します。このように開発者が独自に定義した例外のことをカスタム例外と呼びます。カスタム例外が必要な理由.NETには数多くの組み込み例外(NullReferenceException や ArgumentException など)が用意されていますが、アプリケーション固有のエラー状態を表現したい場合には、カスタム例外を作成するのが適切です。たとえば「温度がゼロであること」をエラーとして扱いたい場合など、ビジネスロジック