1月19

VB程序错误处理方法小结

| |
13:57V B 源码  From: 本站原创
将一个项目当作已经编译的程序运行时,未捕获的错误会造成致命的后果,它们会导致程序终止运行。必须尽一切努力防止发生这种情况。  
若要防止代码中的错误中断代码的运行(并终止已编译程序的运行),我们可以创建错误处理程序以捕获代码中的错误。当捕获一个错误后,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这个语句上继续执行,因为这是代码的第四个语句(不是计数注释)。不仅这种情况不会发生,而且该代码实际上会导致产生一个编译错误,并且代码根本不会执行。

Error Trapping属性设置为下列值中的一个:
Break On All Errors(在所有错误上中止)。
Break In Class Module(在类模块中中止)。
Break On Unhandled Errors(在未处理的错误上中止)。
Break On All Errors实际上可使所有错误处理程序均取消激活状态。当出现一个错误时,无论是否激活了处理程序,代码均在出错的语句上进入中止方式,同时VB显示一条出错消息。这使我们能够在IDE进行测试时处理意料不到的错误。



来源:夕阳醉了's Blog
地址:http://oznn.com/post/80/
转载时须以链接形式注明作者和原始出处及本声明!
阅读(7278) | 评论(1) | 引用(0)
mxay Homepage
2007年1月27日 00:36
On Error Resume Next
不要大量使用哦。有些错误还是得正确处理。呵呵
夕阳醉了 回复于 2007年1月27日 10:21
是啊 我一般不用这个的
引用
 对错误进行处理的最简单(和最危险)的方法是使用On Error Resume Next语句
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemot
emotemotemotemot
emotemotemotemot
emotemotemotemot
emotemotemotemot
emotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]