Csharp-exception-handling
C#-例外処理
例外は、プログラムの実行中に発生する問題です。 C#例外は、ゼロ除算の試行など、プログラムの実行中に発生する例外的な状況への応答です。
例外は、プログラムのある部分から別の部分に制御を移す方法を提供します。 C#例外処理は、 try 、 catch 、 finally 、および throw の4つのキーワードに基づいて構築されています。
- try -tryブロックは、特定の例外がアクティブになるコードのブロックを識別します。 その後に1つ以上のcatchブロックが続きます。
- catch -プログラムは、問題を処理するプログラム内の場所で例外ハンドラーを使用して例外をキャッチします。 catchキーワードは、例外のキャッチを示します。
- finally -finallyブロックは、例外がスローされるかどうかに関係なく、指定された一連のステートメントを実行するために使用されます。 たとえば、ファイルを開く場合は、例外が発生したかどうかにかかわらず、ファイルを閉じる必要があります。
- throw -問題が発生すると、プログラムは例外をスローします。 これは、throwキーワードを使用して行われます。
構文
ブロックが例外を発生させると仮定すると、メソッドはtryキーワードとcatchキーワードの組み合わせを使用して例外をキャッチします。 try/catchブロックは、例外を生成する可能性のあるコードの周りに配置されます。 try/catchブロック内のコードは保護されたコードと呼ばれ、try/catchを使用するための構文は次のようになります-
tryブロックが異なる状況で複数の例外を発生させた場合に備えて、複数のcatchステートメントをリストダウンして、異なるタイプの例外をキャッチできます。
C#の例外クラス
C#例外はクラスによって表されます。 C#の例外クラスは、主に System.Exception クラスから直接または間接的に派生します。 System.Exceptionクラスから派生した例外クラスには、 System.ApplicationException および System.SystemException クラスがあります。
次の表は、Sytem.SystemExceptionクラスから派生した定義済みの例外クラスの一部を示しています-
Sr.No. | Exception Class & Description |
---|---|
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#は、tryブロックとcatchブロックの形式で例外処理の構造化されたソリューションを提供します。 これらのブロックを使用すると、コアプログラムステートメントがエラー処理ステートメントから分離されます。
これらのエラー処理ブロックは、 try 、 catch 、および finally キーワードを使用して実装されます。 以下は、ゼロ条件による除算が発生したときに例外をスローする例です-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
ユーザー定義の例外の作成
独自の例外を定義することもできます。 ユーザー定義の例外クラスは、 Exception クラスから派生しています。 次の例はこれを示しています-
上記のコードをコンパイルして実行すると、次の結果が生成されます-