扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:晓华 来源:yesky 2007年10月14日
关键字:
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() |
我们可能认为,被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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者