C#基本

[C#] 例外処理の書き方(try~catch~finally)

2021年12月21日

C#での例外処理の書き方です。

構文

構文

try
{
  //例外が発生する可能性がある処理
}
catch(<例外クラス>)
{
  //例外発生時の処理
}
finally
{
  //例外発生の有無に係わらず実行したい処理
}

catchは発生した例外毎に複数記述できます。

finallyは省略可です。

サンプル

例)try~catch~finallyを使ったサンプル


class TestClass
{
  static void Main(string[] args)
  {
    try
    {
      Console.WriteLine("処理を開始します。");
      int a = 100;
      int b = 0;
      double x = a / b;
    }
    catch(Exception ex)
    {
      Console.WriteLine("例外が発生しました。");
      Console.WriteLine(ex);
    }
    finally
    {
      Console.WriteLine("処理を終了します。");
    }
  }
}

結果

処理を開始します。
例外が発生しました。
System.DivideByZeroException: Attempted to divide by zero.
処理を終了します。

結果は分かりやすくするため一部省略しています。

標準例外クラス

標準の例外クラスには以下のようなものがあります。
独自例外を作成してcatchすることもできます。

例外クラス 意味
System.Exception すべての例外
System.OutOfMemoryException メモリ不足例外
System.InvalidCastException 型変換に失敗した
System.IndexOutOfRangeException 範囲外エラー
配列のインデックスを超えてアクセスしたなど
System.NullReferenceException Null参照した
System.DivideByZeroException ゼロ除算を行った
System.IO.IOException ファイル入出力などでエラーが発生した

備考

  • 基本的にJavaなどと同じ構文です。
  • 独自例外クラスは、System.Exceptionを継承させる必要があります。

関連記事

-C#基本
-