0

On Error Goto 0如果在 VB6 应用程序中发生运行时错误,这是否意味着错误处理已通过使用语句关闭?

这个假设可以成立吗?或者是否存在其他可能发生运行时错误的情况?

如果错误已由 aResume Next或 a处理,Goto则肯定不会发生运行时错误。对或错?

4

2 回答 2

0

这是因为执行代码中没有错误处理程序,包括调用过程。您不能做出所On Error Goto 0使用的假设。

我假设您的意思是未处理的运行时错误。由于未处理,您的应用程序“异常结束”。

Visual Basic 概念,错误处理层次结构, http: //msdn.microsoft.com/en-us/library/aa241677 (VS.60).aspx

如果错误已由 Resume Next 或 Goto 处理,则肯定不会发生运行时错误。对或错?

错误的。有时在错误处理程序中会发生运行时错误。如果您的错误处理逻辑错过了这一点,您将收到未处理的运行时错误。


更多信息

简而言之, usingOn Error Goto 0删除过程中的任何错误处理程序(禁用或关闭),直到过程结束或您使用其中一个On Error语句分配错误处理程序。没有错误处理代码的用户界面事件也将没有错误处理程序,直到您定义一个。

错误捕获

在调试期间,您可以指定“错误捕获”,它会导致 VBE 中断“on-all-errors”、“in-class-module”或“on-unhandled-errors”。在运行时,行为是“未处理的错误”(如果 Visual Basic 运行时库找不到错误处理程序,则会发生运行时错误。)。如果您正在排除故障/调试,请尝试将“错误捕获”设置为“所有错误中断”。这将导致 VBE 在错误点中断,您可以在此处开始调试或继续执行。

于 2010-05-11T12:06:08.867 回答
0

如果您正在尝试解决问题,我建议使用调试器来重现错误消息,然后暂停代码执行并查看错误发生的位置。检查调用堆栈,查看变量值,并找出错误是如何发生的。

  • 如果可能,请使用 VB6 IDE。
  • 如果在使用 VB6 IDE 时没有出现问题,请使用另一个调试器,例如免费的 Visual Studio 2008 Express Edition。

有几种情况可能会发生错误。例如,您可以执行触发事件并立即处理的代码行,并且事件处理程序可能会遇到错误(如果事件处理程序没有错误处理)。此外,有时 VB6 运行时错误可能会在您的应用程序启动时显示,在您的任何代码执行之前。

于 2010-05-12T00:19:49.053 回答