如何:在 Visual Basic 中使用 Try…Finally 块清理资源

Finally 语句可用在 Try 块中以确保已分配的资源得以清理。 Finally 块中的代码在异常处理代码之后、控制返回调用过程之前运行。 即使代码引发了异常,即使在 Catch 块中添加了显式的 Exit Function(或 Exit Sub)语句,都会运行 Finally 块。

如果不需要捕捉特定异常,则 Using 语句的行为与 Try Finally 块一样,且无论以何种方式退出块,都保证会处置资源。 即使发生未经处理的异常,也是如此。 有关更多信息,请参见 Using 语句 (Visual Basic)

使用 Finally 语句清理资源

  • 将无论是否出现异常都要执行的代码放置在 Finally 块内。 下面的代码创建一个 StreamReader,并用来读取文件。

    Dim reader As New System.IO.StreamReader("C:\testfile")
    Try
        reader.ReadToEnd()
    Catch ex As System.IO.IOException
        MsgBox("Could not read file")
    Finally
        'This command is executed whether or not the file can be read
        reader.Close()
    End Try
    

请参见

任务

如何:在 Visual Basic 中使用 Try...Catch 块测试代码

如何:检查异常的内部异常 (Visual Basic)

如何:释放系统资源 (Visual Basic)

参考

Using 语句 (Visual Basic)

其他资源

异常处理任务 (Visual Basic)