C#言語の例外処理機能は、プログラム実行中に発生する予期せぬ状況や異常な状況に対処するのに役立ちます。 例外処理はtry、catch、finalのキーワードを使って特定の操作を試みて失敗を処理します。これらの操作は失敗する可能性はありますが、必要だと確信していて資源を整理したいなら試してみることが可能です。 共通言語ランタイム(CLR)、 NET Frameworkやサードパーティのライブラリやアプリケーションコードは例外を生成できます。 例外はthrowキーワードを使って作成されます。 多くの場合、例外はコードで直接呼び出されるメソッドではなく、呼び出しスタックの下位にある別のメソッドによって発生します。 この場合、CLRはスタックを拡張して、その特定の例外タイプに対するキャッチブロックを含むメソッドが存在するか確認し、そのようなメソッドを見つけたら最初に見つけたキャッチブロックを実行します。 コールスタックのどこにも適切なキャッチブロックが見つからなければ、プロセスは終了し、ユーザーにメッセージが表示されます。 この例では、ゼロで割られる状況が存在するかどうかを検出するために手法が用いられています。 もしあれば、そのエラーは見つかります。 例外処理がなければ、このプログラムは終了し、「DivideByZeroException Not Handled」エラーを発生します。- class ExceptionTest
- {
- static double SafeDivision(double x, double y)
- {
- if (y == 0)
- throw new System.DivideByZeroException();
- return x / y;
- }
- static void Main()
- {
- // Input for test purposes. Change the values to see
- // exception handling behavior.
- double a = 98, b = 0;
- double result = 0;
- try
- {
- result = SafeDivision(a, b);
- Console.WriteLine("{0} divided by {1} = {2}", a, b, result);
- }
- catch (DivideByZeroException e)
- {
- Console.WriteLine("Attempted divide by zero.");
- }
- }
- }
コードをコピーします
|