C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#の例外処理入門:try・catch・finallyの使い方をわかりやすく解説

C#における例外(Exception)とは、プログラムの実行中に発生する例外的な状況への対応を指します。代表的な例としては、ゼロ除算(0での割り算)の試みなどが挙げられます。

C#では、例外処理を以下のキーワードを使って実装します。

例外処理に使う3つのキーワード

  • try − 例外が発生する可能性のあるコードブロックを特定します。tryブロックには、1つ以上のcatchブロックが続きます。
  • catch − プログラム内で問題を処理したい箇所に例外ハンドラーを配置し、例外を捕捉します。catchキーワードは例外の捕捉を示します。
  • finally − 例外がスローされたかどうかにかかわらず、必ず実行したい一連のステートメントを記述します。たとえばファイルを開いた場合、例外の有無に関係なく必ず閉じる必要があります。このような後処理にfinallyブロックが適しています。

C#での例外処理のサンプルコード

以下は、C#で例外を処理する方法を示す具体例です。

using System;

namespace ErrorHandlingApplication {
    class DivNumbers {
        int result;

        DivNumbers() {
            result = 0;
        }

        public void division(int num1, int num2) {
            try {
                result = num1 / num2;
            } catch (DivideByZeroException e) {
                Console.WriteLine("Exception caught: {0}", e);
            } finally {
                Console.WriteLine("Result: {0}", result);
            }
        }

        static void Main(string[] args) {
            DivNumbers d = new DivNumbers();
            d.division(25, 0);
            Console.ReadKey();
        }
    }
}

コードの解説

このサンプルでは、まずtryブロック内で割り算を実行し、値を設定しています。次にcatchブロックで例外を捕捉します。ここではDivideByZeroExceptionを指定しているため、ゼロ除算が発生した場合にのみこのブロックが実行されます。

最後にfinallyブロックで結果を表示します。finallyは例外の発生有無にかかわらず必ず実行されるため、計算結果やステータスの出力に最適です。

実行結果

上記のコードでは、引数としてd.division(25, 0)を呼び出しているため、ゼロ除算の例外が発生し、catchブロックで捕捉されます。その後、finallyブロックが実行され、以下のような出力が得られます。

Exception caught: System.DivideByZeroException: Attempted to divide by zero.
   at ErrorHandlingApplication.DivNumbers.division(Int32 num1, Int32 num2)
Result: 0

このように、try・catch・finallyを組み合わせることで、プログラムの異常終了を防ぎつつ、リソースの解放などの確実な後処理を実現できます。例外処理は堅牢なC#アプリケーションを構築するうえで欠かせない基本的なテクニックです。

  1. C#でソート済み配列から重複を削除し、重複のない配列を返す方法

    配列がすでにソートされている場合、重複する要素は必ず隣接しています。この性質を利用すると、2つのポインタ(i と j)を使った効率的なアルゴリズムで重複を削除できます。ここで i はゆっくり進む「スローポインタ」、j は速く進む「ファストポインタ」として機能します。 アルゴリズムの手順 nums[i] == nums[j] の間は重複が続いているため、j を1つずつ進めて重複をスキップしていきます。 nums[j] != nums[i] となった時点で、連続した重複が終わったことを意味します。そこで、その値を nums[i + 1] にコピーし、i をインクリメントしてから同じ処理を繰り返しま

  2. C#の例外処理入門:try・catch・finallyの使い方をわかりやすく解説

    C#における例外(Exception)とは、プログラムの実行中に発生する例外的な状況への対応を指します。代表的な例としては、ゼロ除算(0での割り算)の試みなどが挙げられます。C#では、例外処理を以下のキーワードを使って実装します。例外処理に使う3つのキーワードtry − 例外が発生する可能性のあるコードブロックを特定します。tryブロックには、1つ以上のcatchブロックが続きます。catch − プログラム内で問題を処理したい箇所に例外ハンドラーを配置し、例外を捕捉します。catchキーワードは例外の捕捉を示します。finally − 例外がスローされたかどうかにかかわらず、必ず実行したい一