try/catch を使用して例外を処理する方法
try-catch ブロックの目的は、作業コードによって生成された例外をキャッチし、処理することです。 例外によっては、catch
ブロックで処理され、例外を再スローせずに問題を解決できるものもありますが、多くの場合、適切な例外が確実にスローされるようにする必要があります。
例
この例の IndexOutOfRangeException は最も適切な例外というわけではありません。呼び出し元から index
引数が渡されてエラーが発生しているため、より適切なメソッドは ArgumentOutOfRangeException になります。
static int GetInt(int[] array, int index)
{
try
{
return array[index];
}
catch (IndexOutOfRangeException e) // CS0168
{
Console.WriteLine(e.Message);
// Set IndexOutOfRangeException to the new exception's InnerException.
throw new ArgumentOutOfRangeException("index parameter is out of range.", e);
}
}
コメント
例外を発生させるコードは try
ブロックに囲まれています。 IndexOutOfRangeException
が発生した場合にこれを処理するための catch
ステートメントが、すぐ後に追加されています。 catch
ブロックは IndexOutOfRangeException
を処理し、代わりにより適切な ArgumentOutOfRangeException
をスローします。 呼び出し元にできるだけ多くの情報を提供するため、元の例外を新しい例外の InnerException として指定することを検討してください。 InnerException プロパティは読み取り専用であるため、新しい例外のコンストラクターで割り当てる必要があります。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET