科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VB程序错误处理方法小结

VB程序错误处理方法小结

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

VB程序的错误种类主要有两种类型:一种是编译错误;另一种是运行期错误。

作者:晓华 来源:yesky 2007年10月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
三、错误处理程序的类型

  将一个项目当作已经编译的程序运行时,未捕获的错误会造成致命的后果,它们会导致程序终止运行。必须尽一切努力防止发生这种情况。若要防止代码中的错误中断代码的运行(并终止已编译程序的运行),我们可以创建错误处理程序以捕获代码中的错误。当捕获一个错误后,VB并不显示出错消息,也不终止代码的运行。相反,我们编写的专门用来处理错误的代码则开始运行。每个过程都应该拥有错误处理程序,而不管它包含多大的代码量。最好在代码中放入一个On Error语句,作为代码的第一行,放在紧靠过程标题的后面和变量说明的前面。如果一个过程的错误能够以这种方式出现,就应该在过程的开头用突出的注释来明确说明这一行为特性。

  若要捕获错误,基本上可以使用下面两种方法:

   当出现错误时,使用On Error GoTo,转移到别的代码上去执行。

   使用On Error Resume Next语句,不中断代码的执行,也不转移到别的代码上去执行,而是忽略该错误。

  可以在一个过程中创建多个错误处理程序,但每次只能激活一个错误处理程序。VB将最新的On Error语句中指明的处理程序视为已经激活的错误处理程序。切换一个过程中的不同位置上的错误处理程序,往往是很有好处的,理解各个错误处理程序如何运行,是利用这一功能的关键。

  1、使用On Error Resume Next以忽略错误

  对错误进行处理的最简单(和最危险)的方法是使用On Error Resume Next语句。On Error Resume Next语句规定,代码中的错误将完全被忽略,存在错误的代码行被跳过,然后继续执行下一个语句。例如,下面这个过程存在一个运行期错误(即一个被0除的错误),它由On Error Resume Next错误处理程序来处理:

Private Sub cmdGenerateError_Click()
 '* Purpose: Test On Error Resume Next
 On Error Resume Next
 Debug.Print 10 / 0
End Sub

  Debug.print语句产生了一个被0除的错误。但是,由于存在一个已经激活的错误处理程序(由On Error Resume Next指定),因此该错误被忽略,并在下一个语句(即End Sub语句)上恢复执行。错误被忽略并不意味着我们无法知道错误已经发生。当一个语句产生了一个错误之后,尽管没有显示出错消息,Err对象仍然包含关于该错误的信息。

  2、使用On Error GoTo转移执行的代码流

  除非我们捕获了一个意料之外的错误,比如上面代码中的那种错误,否则忽略代码中的错误是非常危险的,并且是一种不得已时采用的办法。当一个过程中出现了意料之外的错误时,该过程就会产生许多问题。如果忽略该错误,就会对用户产生严重的影响,比如数据没有保存,或者保存不正确。许多情况下,当出现代码错误时,必须执行某些操作,将代码的执行转移到On Error GoTo语句中指定的错误处理程序。该语句的句法如下:

On Error GoTo line

  请注意,line必须是指与On Error GoTo语句相同的过程中的一个语句。

  在这个句法中, line有两个意思。首先它是指出现错误时要转移到的这个代码行号。不过这个行号并不是过程中的代码行的物理位置。请看下面这个代码例子:

Private Sub TestErrorHandler()
 '* Purpose : Test the On Error GoTo statement by deliberately
 '* generating a run-timeerror.
 On Error GoTo 4
 Debug.Print "Line 2"
 Debug.Print 10 / 0
 Debug.Print "Line 4"
 Debug.Print "Line 5"
End Sub

  我们可能认为,被0除的错误会导致代码在输出文本line 4这个语句上继续执行,因为这是代码的第四个语句(不是计数注释)。不仅这种情况不会发生,而且该代码实际上会导致产生一个编译错误,并且代码根本不会执行。

  3、用调试方式激活错误处理程序和取消其激活状态

  虽然我们不希望已编译程序中的错误不被捕获,但是,当程序在IDE中运行时如果出现错误,让VB中止代码的执行,这样做常常是非常不利的。当代码的执行中止时,会看到一条相关的出错消息,并告诉我们出现错误的代码行,这对于代码的调试来说是大有帮助的。VB为处理代码设计时遇到的错误而使用的方法取决于VB IDE的Error Trapping(捕获错误)属性。Error Trapping属性是VB环境的一个属性,不是某个项目的属性。我们操作的每个项目,即使在关闭和重新启动VB之后,均使用该设置值。若要为VB的当前会话设置Error Trapping选项,而不必为将来的会话修改默认值,请使用代码窗口的快捷菜单上的Toggle命令(见图2)。


图2 从任何代码窗口的快捷菜单中选择Toggle命令

  可以将Error Trapping属性设置为下列值中的一个:

   Break On All Errors(在所有错误上中止)。

   Break In Class Module(在类模块中中止)。

   Break On Unhandled Errors(在未处理的错误上中止)。

  Break On All Errors实际上可使所有错误处理程序均取消激活状态。当出现一个错误时,无论是否激活了处理程序,代码均在出错的语句上进入中止方式,同时VB显示一条出错消息。这使我们能够在IDE进行测试时处理意料不到的错误。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章