次の方法で共有


finallyブロックを使用するための方法

例外が発生すると、実行が停止し、適切な例外ハンドラーに制御が与えられます。 これは、多くの場合、実行される予定のコード行がバイパスされることを意味します。 例外がスローされた場合でも、ファイルを閉じるなどのリソースのクリーンアップは実行する必要があります。 これを行うには、 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

こちらも参照ください