MzTools 中默认的错误处理模板是:
On Error GoTo {PROCEDURE_NAME}_Error
{PROCEDURE_BODY}
On Error GoTo 0
Exit {PROCEDURE_TYPE}
{PROCEDURE_NAME}_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure {PROCEDURE_NAME} of {MODULE_TYPE} {MODULE_NAME}"
请注意,On Error Goto 0
直接放在 Exit 语句之前。这样做的意义何在?这似乎是多余的。当函数退出时,函数的错误处理程序无论如何都会关闭。
最佳答案
on error goto 0
off 当前范围内的错误处理并恢复到默认情况。
在这种情况下,过程希望错误处理程序在函数运行期间处于事件状态,但希望它在退出时关闭。正如您所说,在这种情况下没有必要,因为错误处理程序的范围是 {PROCEDURE_TYPE}
,所以它会在退出时恢复。
但有时,编码人员(尤其是那些生成模板的人员)喜欢自行清理,即使在技术上没有必要,例如在退出之前释放 C 程序中分配的内存。
这就是我怀疑的情况,它确实只是假设。
关于vb6 - "On Error Goto 0"退出函数前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10395149/