我遇到过几次这个问题,但一直无法解决,但现在我需要一劳永逸地解决它。
我有一个程序一直在抛出运行时错误。这不是问题,因为我在函数顶部定义了一个错误处理程序,在底部定义了一个处理程序,如下所示:
retryConcat:
On Local Error GoTo concatErr
'Some Code here
Exit Sub
concatErr:
If MsgBox("Could not append the receipt for this transaction to the Receipt viewer logs.", vbExclamation + vbRetryCancel, "Warning - Missing Receipt") = vbRetry Then
err.Clear
GoTo retryConcat
End If
错误处理程序包含一个消息框,允许用户在需要时重试。现在这是让我感到困惑的部分。第一次抛出错误时,它会显示消息框并允许用户按预期重试。然后程序跳转到适当的行并再次尝试。但是,第二次抛出错误时,它不会跳转到错误处理程序,而是跳出过程,而父级中的错误处理程序会捕获它!
所以我的问题是为什么它会在后续抛出时跳转到父错误处理程序。这发生在我的代码中的许多地方。在许多我可以手动检查错误的情况下,我可以将代码粘贴在 while 循环中来解决它,但是对于运行时错误,我不得不使用错误捕获,它以这种相当烦人的方式起作用。
任何帮助或建议将不胜感激。