方法: 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 なので、コンストラクターまたは新しい例外で割り当てる必要があります。