コメント無し...
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ブロック」の例外を処理しているだけです。要するに、あらゆる方法でトライ/キャッチを完全に模倣する方法はないと思います。もしあれば、MicrosoftはVBのエラー処理を置き換える必要はなかったでしょう:)