如何使用最终块

发生异常时,执行将停止,控制将转移给相应的异常处理程序。 这通常意味着你预期要执行的代码行将被绕过。 即使发生异常,仍需进行某些资源清理,例如关闭文件。 为此,可以使用块 finally 。 无论是否引发异常,finally 块始终执行。

下面的代码示例使用一个try/catch块来捕获ArgumentOutOfRangeException。 该方法 Main 创建两个数组,并尝试将一个数组复制到另一个数组。 该操作将生成一个 ArgumentOutOfRangeException,因为 length 被指定为 -1,并且错误会被写入控制台。 无论复制操作的结果如何,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

另请参阅