VB6 处理错误处理程序中引发的错误
VB6 Handle error raising in error handler
我有这样的代码,所以当第一次出现错误时 (c=1/0) 然后进入错误句柄,之后它再次进入如果出现错误而不是应用程序崩溃,不进入错误处理程序,知道如何解决这个问题吗?
出错时转到 ErrorHandler
最大重试=3
c=1/0
再次:
c=a/b
错误处理程序:
如果 maxretry>0 那么
最大重试=最大重试-1
再次转到
万一
您宁愿使用 <b>RESUME</b>
而不是 <b>GOTO</b>
在错误处理程序部分:
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
使用 <b>RESUME</b>
将在某种程度上重置内部错误处理程序标志并让您重新进入其中(某种程度上) .
<b>Resume Again</b>
告诉 VB6 在标记为 [= 的行恢复执行代码(处理错误后) 27=]再次:</b>
您还可以使用 <b>Resume Next</b>
告诉 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,您可能会陷入无限循环,因为 <b>c = a / b</b>
会失败,然后转到错误处理程序,错误处理程序会继续执行到 NoMoreTry,然后失败,...等等...
为避免这种情况,您可以在 NoMoreTry 之后立即使用 <b>On Error Resume Next</b>
,或者在错误处理程序中添加更多代码。
我有这样的代码,所以当第一次出现错误时 (c=1/0) 然后进入错误句柄,之后它再次进入如果出现错误而不是应用程序崩溃,不进入错误处理程序,知道如何解决这个问题吗?
出错时转到 ErrorHandler 最大重试=3 c=1/0 再次: c=a/b 错误处理程序: 如果 maxretry>0 那么 最大重试=最大重试-1 再次转到 万一
您宁愿使用 <b>RESUME</b>
而不是 <b>GOTO</b>
在错误处理程序部分:
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
使用 <b>RESUME</b>
将在某种程度上重置内部错误处理程序标志并让您重新进入其中(某种程度上) .
<b>Resume Again</b>
告诉 VB6 在标记为 [= 的行恢复执行代码(处理错误后) 27=]再次:</b>
您还可以使用 <b>Resume Next</b>
告诉 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,您可能会陷入无限循环,因为 <b>c = a / b</b>
会失败,然后转到错误处理程序,错误处理程序会继续执行到 NoMoreTry,然后失败,...等等...
为避免这种情况,您可以在 NoMoreTry 之后立即使用 <b>On Error Resume Next</b>
,或者在错误处理程序中添加更多代码。