关闭错误处理

如果在过程中激活了错误捕获,则当过程完成执行时,错误捕获会自动无效。但是,当过程中的代码一直在执行时,可能会想要关闭过程中的错误捕获。为了关闭激活的错误捕获,可用 On Error GoTo 0 语句。一旦 Visual Basic 执行了该语句,则在过程内检测错误而不捕获错误。在过程中到处都可用 On Error GoTo 0 关闭错误处理,甚至在错误处理例程自身内也是如此。

如下段所示,在整个过程中试着用 Step Into 单步调试:

Sub ErrDemoSub ()
   On Error GoTo SubHandler   '激活错误捕获。
      '需要捕获错误并在此修正错误。
      ' Kill 函数用于删除文件。
      Kill "Oldfile.xyz"
   On Error GoTo 0            '在此关闭错误处理。
      Kill "Oldfile.xyz"
   On Error GoTo SubHandler   '再次激活错误捕获。
      Kill "Oldfile.xyz"
   Exit Sub
SubHandler:                     '错误处理例程在此进行。
   MsgBox "Caught error."
   Resume Next
End Sub

详细信息 为了学习如何使用 Step Into 的特点,请参阅本章后面的“运行应用程序的选定的部分”。

用错误处理程序调试代码

在调试代码时可能会发现,当代码产生错误而且错误处理程序捕获了这个错误时,代码将搅乱对自身特点的分析。虽然在项目的每一个模块中都可在 On Error 行外注释,但这也不胜其烦。

为此另辟蹊径,在调试时可以关闭错误处理程序,使得在每次有错误的时候都进入中断模式。

要在调试时禁止错误处理程序,请按照以下步骤执行:

  1. 从“代码”窗口上下文菜单(在“代码”窗口上单击鼠标右键)选取“切换”命令。

  2. 选择“发生错误时中断”项。

当错误发生在项目中任何一个地方时,通过选择这个选项就会进入中断模式,而且,“代码”窗口将在出现错误的地方显示代码。

如果没有选择这一选项,错误可能会显示错误信息,也可能不这样,这要取决于错误发生在什么地方。例如,应用程序引用的外部对象就可能产生错误。如果它确实显示了信息,则该信息可能是无意义的,这与错误最初出现的地方有关。