on error resume next 起的作用是 block 级的,并不是全局的。
例:
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 之外。
相关阅读