On Error Goto 0
如果在 VB6 应用程序中发生运行时错误,这是否意味着错误处理已通过使用语句关闭?
这个假设可以成立吗?或者是否存在其他可能发生运行时错误的情况?
如果错误已由 aResume Next
或 a处理,Goto
则肯定不会发生运行时错误。对或错?
On Error Goto 0
如果在 VB6 应用程序中发生运行时错误,这是否意味着错误处理已通过使用语句关闭?
这个假设可以成立吗?或者是否存在其他可能发生运行时错误的情况?
如果错误已由 aResume Next
或 a处理,Goto
则肯定不会发生运行时错误。对或错?
这是因为执行代码中没有错误处理程序,包括调用过程。您不能做出所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 在错误点中断,您可以在此处开始调试或继续执行。
如果您正在尝试解决问题,我建议使用调试器来重现错误消息,然后暂停代码执行并查看错误发生的位置。检查调用堆栈,查看变量值,并找出错误是如何发生的。
有几种情况可能会发生错误。例如,您可以执行触发事件并立即处理的代码行,并且事件处理程序可能会遇到错误(如果事件处理程序没有错误处理)。此外,有时 VB6 运行时错误可能会在您的应用程序启动时显示,在您的任何代码执行之前。