假设在VB.NET中你有:
Try
Debug.Print("Trying...")
Catch ex as Exception
throw new Exception("Exception", ex)
Finally
Debug.Print("Finally...")
End Try
您如何使用“On Error Goto”构造编写此内容? (请不要问我为什么要这样做,只是好奇是否可以做到)。
答案 0 :(得分:3)
你走了:
On Error Goto ErrHandler
Debug.Print("Trying...")
Goto Finish
ErrHandler:
Debug.Print("Exception...")
On Error Goto ErrHandler2
Debug.Print("Throwing another error, I guess...")
Goto Finish2
ErrHandler2:
Debug.Print("Exception 2...")
Finish2:
Debug.Print("Finally 2...")
Finish:
Debug.Print("Finally...")
答案 1 :(得分:0)
没有评论......
Public Sub PleaseDontMakeMeDoThis()
On Error Goto ExceptionHandler
Debug.Print("Trying...")
Debug.Print("Finally...")
Exit Sub
ExceptionHandler:
Debug.Print("Exception...")
Resume Next
End Sub
唯一的区别是,如果在try / catch中,catch中抛出异常,那么finally仍将被处理。我不知道你怎么能得到它来处理它。我想你可以这样做:
Public Sub PleaseDontMakeMeDoThis()
On Error Resume Next
Debug.Print("Trying...")
If Err.Number <> 0 Then
On Error GoTo PseudoFinally
Debug.Print("Exception...")
End If
PseudoFinally:
Debug.Print("Finally...")
End Sub
但在这种情况下,它只是在“catch块”中吃异常而不是让调用代码处理它。简而言之,我认为无论如何都无法完全模仿尝试/捕获。如果有的话,微软不需要替换VB的错误处理:)