关于 on error resume next 的一些笔记

作者:leen 来源:ITPOW 日期:2005-8-4

on error resume next 起的作用是 block 级的,并不是全局的。

例:

function Foo()
    on error resume next
    b = 1/0 '这里产生异常会继续执行下面的代码
    a = "ddd"
end function
call Foo()
a = 1/0 '由于在全局范围内没有on error resume next,所以这里产生异常会中断执行

Sub1 中有 on error resume next 语句,Sub2 没有,当 Sub1 内部代码调用 Sub2 时,如果 Sub2 中产生异常,也不会中断执行。

err 对象

虽然 on error resume next 的作用不是全局的,err 对象却是一个全局的对象。

如果 err.number <> 0,那么表示错误发生。

clear 方法

clear 方法将 err 对象的 number 置为 0。在使用 on error resume next 时会自动调用 clear 方法,但 exit sub、exit function 不会自动调用 clear 方法。所以如果异常发生,就要执行 exit sub、exit function 之前要调用 clear 方法,避免 sub 或 function 之外的代码看到的 err.number 仍然是 <> 0 的,除非有特定的需求,故意把错误“传染”到 sub 或 function 之外。

相关阅读

相关文章