如何:使用 Finally 块

更新:2007 年 11 月

异常发生时,执行将终止,并且控制交给最近的异常处理程序。这通常意味着不执行希望总是调用的代码行。有些资源清理(如关闭文件)必须总是执行,即使有异常发生。为实现这一点,可以使用 Finally 块。Finally 块总是执行,不论是否有异常发生。

下面的代码示例使用 try/catch 块捕获 ArgumentOutOfRangeException。Main 方法创建两个数组并试图将一个数组复制到另一个数组。该操作生成 ArgumentOutOfRangeException,同时错误被写入控制台。Finally 块执行,不论复制操作的结果如何。

示例

Imports System
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)
      Finally
         Console.WriteLine("This statement is always executed.")
      End Try
   End Sub 'Main
End Class 'ArgumentOutOfRangeExample
using System;
class ArgumentOutOfRangeExample
   {
   static public void Main()
      {
      int[] array1={0,0};
      int[] array2={0,0};
         try
         {
         Array.Copy(array1,array2,-1);
         }
         catch (ArgumentOutOfRangeException e)
         {
         Console.WriteLine("Error: {0}",e);
         }
         finally
         {
         Console.WriteLine("This statement is always executed.");
         }
      }
   }

请参见

任务

如何:使用 Try/Catch 块捕捉异常

如何:显式引发异常

如何:创建用户定义的异常

其他资源

异常处理基础知识