Vir*_*aly 8 .net vb.net try-catch
在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
Run Code Online (Sandbox Code Playgroud)
我需要确保DisposeClient()一直执行.因为我要退出了Catch,还会Finally被执行吗?
Finally无论代码执行是否阻塞,总是执行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
Run Code Online (Sandbox Code Playgroud)
它显示消息:
Catch
Run Code Online (Sandbox Code Playgroud)
然后
E
Run Code Online (Sandbox Code Playgroud)
这意味着,Finally即使函数在Catch块处返回,也始终执行块.