Error handling 在错误处理程序中引发VB6句柄错误

Error handling 在错误处理程序中引发VB6句柄错误,error-handling,vb6,Error Handling,Vb6,我有这样的代码,所以当第一次出现错误(c=1/0)时,它会进入错误句柄,之后它会再次进入,如果出现错误,应用程序就会崩溃,而不是进入错误句柄,你知道如何修复吗 On Error GoTo ErrorHandler maxretry=3 c=1/0 Again: c=a/b ErrorHandler: if maxretry>0 then maxretry=maxretry-1 goto Again end

我有这样的代码,所以当第一次出现错误(c=1/0)时,它会进入错误句柄,之后它会再次进入,如果出现错误,应用程序就会崩溃,而不是进入错误句柄,你知道如何修复吗

On Error GoTo ErrorHandler maxretry=3 c=1/0 Again: c=a/b ErrorHandler: if maxretry>0 then maxretry=maxretry-1 goto Again end if 关于错误转到错误处理程序 maxretry=3 c=1/0 再一次: c=a/b 错误处理程序: 如果maxretry>0,则 maxretry=maxretry-1 又来了 如果结束 您更愿意在错误处理程序部分使用
RESUME
而不是
GOTO

On Error GoTo ErrorHandler
   maxretry=3
   c=1/0
Again:
     c=a/b
ErrorHandler:
      if maxretry>0 then
          maxretry=maxretry-1
          Resume Again

       end if
使用
RESUME
将重置内部错误处理程序标志,并允许您重新进入该标志(某种)

再次恢复
告诉VB6在标记为
的行中恢复代码的执行(错误处理后):

您还可以使用
Resume Next
,告诉VB6在导致错误的指令之后的下一条指令中继续

如果要重试操作,则必须添加另一个标签并更新代码,代码很可能如下所示:

On Error GoTo ErrorHandler

    ' Max number of tries.
    maxretry = 3

Retry:
    c = 1 / 0

NoMoreTry:
    c = a / b

Exit Sub
' or Exit Function
' to avoid entering error handler because we don't need to

ErrorHandler:
    If (maxretry > 0) Then
        maxretry = maxretry - 1
        ' Try again, resume execution to "Retry" label.
        Resume Retry
    End If
    ' Tried 3 times, resume execution to "NoMoreTry" label.
    Resume NoMoreTry
请注意,在这种特殊情况下,如果b变量等于0,则可能有一个无限循环,因为as
c=a/b
将失败,然后它将转到错误处理程序,该处理程序将恢复执行NoMoreTry,然后失败。。。等等


为了避免这种情况,您可以在NoMoreTry之后立即使用
On Error Resume Next
,或者在错误处理程序中添加更多的代码。

我认为您需要在
处再次使用
On Error
:在上述代码中,无论c=1/0是否导致异常,c都将始终在块末尾=a/b。。。