例外が発生すると、実行が停止し、適切な例外ハンドラーに制御が与えられます。 これは、多くの場合、実行される予定のコード行がバイパスされることを意味します。 例外がスローされた場合でも、ファイルを閉じるなどのリソースのクリーンアップは実行する必要があります。 これを行うには、 finally
ブロックを使用できます。 例外がスローされたかどうかに関係なく、 finally
ブロックは常に実行されます。
次のコード例では、 try
/catch
ブロックを使用して ArgumentOutOfRangeExceptionをキャッチします。
Main
メソッドは、2 つの配列を作成し、一方を他方にコピーしようとします。
ArgumentOutOfRangeExceptionが -1 として指定され、エラーがコンソールに書き込まれるため、アクションによってlength
が生成されます。
finally
ブロックは、コピー アクションの結果に関係なく実行されます。
class ArgumentOutOfRangeExample
{
public static void Main()
{
int[] array1 = {0, 0};
int[] array2 = {0, 0};
try
{
Array.Copy(array1, array2, -1);
}
catch (ArgumentOutOfRangeException e)
{
Console.WriteLine($"Error: {e}");
throw;
}
finally
{
Console.WriteLine("This statement is always executed.");
}
}
}
Class ArgumentOutOfRangeExample
Public Shared Sub Main()
Dim array1() As Integer = {0, 0}
Dim array2() As Integer = {0, 0}
Try
Array.Copy(array1, array2, -1)
Catch e As ArgumentOutOfRangeException
Console.WriteLine("Error: {0}", e)
Throw
Finally
Console.WriteLine("This statement is always executed.")
End Try
End Sub
End Class
こちらも参照ください
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET