【发布时间】:2016-07-06 23:20:41
【问题描述】:
我想知道错误处理。如果在代码执行过程中发生错误,并且我打开了一个记录集,我应该关闭它吗?尝试 recordset.close 操作可能会引发错误,并且由于我在错误处理代码部分中,这将是一个未处理的错误。
如果我将代码发回以在另一个标签处继续,那么它可能会变成无限循环。现在添加一个布尔值来检查这是否是第一次出现错误会起作用,但我真的需要这么大惊小怪吗? 如果代码终止并且我没有关闭它,连接会保持打开状态吗?以后会不会惹麻烦?
Dim rs As DAO.Recordset
Set rs = CurrentDB.OpenRecordset("SELECT * FROM tblSetting")
On Error GoTo handler
'do things
rs.Close
Set rs = Nothing
Exit Sub
handler:
rs.Close
'Set rs = Nothing '-this one is not necessary, as terminating the sub should clear up all references to it, hence Garbage Collector can pick it up
End Sub
这可行,但是……真的吗?
...
Termination:
rs.Close
Set rs = Nothing
Exit Sub
handler:
if ErrorHappened=True then
msgbox "fatal error"
exit sub
else
ErrorHappened=True
resume termination
End If
谢谢!
【问题讨论】:
标签: ms-access error-handling vba