为什么我要使用Exit Sub退出错误处理程序(处理后)而不是让它转到End Sub?
我确信这很简单。我只是不明白。谢谢你的帮助。
示例:
Public Sub SubA()
On Error Goto ProcError
''# other code
MsgBox FuncA()
ProcExit:
Exit Sub
ProcError:
MsgBox Err.Description
Resume ProcExit
End Sub
答案 0 :(得分:26)
您的ProcExit标签是您释放所有资源的地方,无论是否发生错误。例如:
Public Sub SubA()
On Error Goto ProcError
Connection.Open
Open File for Writing
SomePreciousResource.GrabIt
ProcExit:
Connection.Close
Connection = Nothing
Close File
SomePreciousResource.Release
Exit Sub
ProcError:
MsgBox Err.Description
Resume ProcExit
End Sub
答案 1 :(得分:1)
通常,如果您声明了数据库连接或其他对象,无论是安全使用还是在异常之前创建,都需要清理(处理掉),然后将错误处理代码返回到ProcExit入口点将允许你可以在两种情况下进行垃圾收集。
如果你通过堕落到退出Sub退出你的程序,你可能会冒着令人讨厌的实例化对象的风险,这些对象只是在程序的内存中。