次の方法で共有


方法: try/catch を使用して例外を処理する (C# プログラミング ガイド)

try-catch ブロックの目的は、作業コードによって生成された例外をキャッチし、処理することです。例外によっては、catch ブロックで処理し、例外を再スローせずに問題を解決できるものもありますが、多くの場合、適切な例外がスローされるようにする必要があります。

使用例

この例の IndexOutOfRangeException は最も適切な例外ではありません。呼び出し元から index 引数が渡されてエラーが発生したため、より適切なメソッドは ArgumentOutOfRangeException になります。

class TestTryCatch
{
    static int GetInt(int[] array, int index)
    {
        try
        {
            return array[index];
        }
        catch (System.IndexOutOfRangeException e)  // CS0168
        {
            System.Console.WriteLine(e.Message);
            // Set IndexOutOfRangeException to the new exception's InnerException.
            throw new System.ArgumentOutOfRangeException("index parameter is out of range.", e);
        }
    }
}

コメント

例外を発生させるコードが try ブロックに囲まれています。そのすぐ後に追加されている catch ステートメントが、IndexOutOfRangeException が発生した場合に処理します。catch ブロックは、IndexOutOfRangeException を処理し、代わりにより適切な ArgumentOutOfRangeException 例外をスローします。呼び出し元にできるだけ多くの情報を提供するため、元の例外を新しい例外の InnerException として指定することをお勧めします。InnerException プロパティは readonly なので、コンストラクターまたは新しい例外で割り当てる必要があります。

参照

関連項目

例外と例外処理 (C# プログラミング ガイド)

例外処理 (C# プログラミング ガイド)

概念

C# プログラミング ガイド