尝试……抓住…最后在VB.NET中

在VB.NET中,如果从Catch返回一个值,那么Finally代码仍会执行吗?

例如(我已经将这段代码概括了一下):

Try
    response = Client.doRequest()
Catch ex As Exception
    'Request threw an error - Fatal failure.
    InsertErrorLog(ex)
    Return False
Finally
    DisposeClient()
End Try

我需要确保DisposeClient()始终执行.因为我要退出Catch,最终还是会被执行吗?

最后总是执行块,无论代码是否执行到Catch块.

参见:https://msdn.microsoft.com/en-us/library/fk6t46tz.aspx

尝试使用此代码:

Dim Temp As String

Private Sub Button1_Click(sender As Object,e As EventArgs) Handles Button1.Click
    Temp = "A"

    MessageBox.Show(Test())
    MessageBox.Show(Temp)
End Sub

Private Function Test() As String
    Try
        Temp = "B"
        Throw New Exception()
        Temp = "C"

        Return "Try"
    Catch ex As Exception
        Temp = "D"
        Return "Catch"
    Finally
        Temp = "E"
    End Try

    Temp = "F"
    Return "End"
End Function

它显示消息:

Catch

然后

E

这意味着,即使函数在Catch块返回,也始终执行finally块.

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...