分享

【烟花原创】VBA零基础之第101篇VBA错误处理(五)

 fzchenwl 2015-04-01

Resume语句

该语句执行后,会导致程序恢复原有的运行。

可以恢复到错误所在行,或者恢复发生运行错误语句的下一行处开始执行,抑或是跳转到指定的行标签处开始执行。

如果在错误处理程序之外的任何地方使用 Resume 语句都会导致错误发生。

1.Resume

如果错误和错误处理程序出现在同一个过程中,则从产生错误的语句恢复运行。

如果错误出现在被调用的过程中,则从最近一次调用包含错误处理程序的过程的语句处恢复运行。

在错误处理程序中使用这一条语句后,有可能会再次导致运行错误的产生,从而陷入一个错误处理死循环中,这时恐怖就得按CTRL+ALT+DELETE键结束EXCEL程序了。

虽然这条语句很危险,但是在一些特殊场合中又能很好发挥作用。

比如在代码中要建立一个远程数据库连接,但是由于网络速度慢或者突然出现故障的情况下,可以通过Resume语句来不停的重试,在重试的过程中通过设置一个计数器变量。当计数器变量达到一个阀值时可以给出错误提示告诉用户由于网络原因导致连接无法建立。

我在通过IE访问网站时就曾用过这种方法,当时是访问网站出现问题后,但是在产生运行错误后你点继续又能正常运行,碰到类似需要“不停的重试”方能正常运行的情况下,Resume确实还是能解决问题。

示例:      


2.Resume Next

如果错误和错误处理程序出现在同一个程序中,则从紧随产生错误的语句的下个语句恢复运行。

如果错误发生在被调用的过程中,则对最后一次调用包含错误处理程序的过程的语句(或 On Error Resume Next 语句),从紧随该语句之后的语句处恢复运行。

示例1

示例2

在代码调试中,通过单步运行这条语句,可以很容易并且快速的定位到错误产生的代码行,从而更迅速的找出产生错误的直接原因,进而防漏补缺。


3.Resume line

在必要的 line 参数指定的 line 处恢复运行。

line 参数是行标签或行号,必须和错误处理程序在同一个过程中。

当错误处理程序跳转到指定行标签处行时,也要是否产生错误循环。

另外当跳转到指定的行标签处运行后,相关的错误处理完成(通过消息框或相关对象引用关闭并翻译,全局变量的重置)是否有相关的代码实现代码运行流程的改变(例如提前结束代码)。

示例:

其实上面的例子这个resume errExit其实是可以不需要的(想想为什么可以不需要),这里纯粹举例而已。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多