我从某个地方读取,不建议从错误处理块退出。可悲的是,他们没有给出解释,为什么?为什么从一个错误处理程序块中退出一个子程序是错误的?
我很好奇为什么这样。我在"On Error Goto 0" before Exit Function的讨论中找到了与此相关的内容,但不确定这是否是明确的答案。他们谈论的Err对象没有被清除。这是唯一的问题,如果是的话是否有解决方法?
这是错误的吗?如果是,那么退出该功能的推荐方式是什么?我不是一个支持发言的人,他们让代码难以遵循。
Private Sub Foo2()
On Error Resume Next
'Multiple lines of code
If Not Foo(arg1,arg2) Then
Exit Sub 'Can I exit here?
End If
'Multiple lines of code
On Error GoTo 0
End Sub
'On Error Goto'绝对没问题,如果使用纪律。它相当于更现代语言中的“Try ... Catch”块。肯定比'On Error Resume Next'更好' – MarkJ
'On Error Resume Next'是纯粹的邪恶,当应用于多行代码时可能会引发您无法预防的异常。 – Dabblernl