处理汇总到主程序的错误

4 error-handling vba

如果我有一个错误处理的主程序调用其他程序而没有错误处理,那么错误是否应该汇总到主程序?

如果没有错误处理的过程使用函数而没有错误处理怎么办?

一切都应该归结为主程序的错误处理吗?

RBa*_*ung 7

是的,未处理的错误会卷起堆栈.如果您的主例程(或当前事件处理例程)中没有错误处理,则错误将汇总到VBA本身,这将导致程序中止,或重置主机应用程序中的VBA环境.(你不希望如此).


我可以想到两个明显的例外:一个是虚幻的,一个是真实的:

1)如果通过一个意料之外的事件路径输入VBA,而不是通过主例程,可能看起来你的主例程错误处理程序被错误返回绕过,但实际上,它是另一个线程,所以当它从事件处理程序汇总,它独立于Main例程的主线程进入VBA.

2)VBA错误处理无法捕获所有错误,特别是大多数FATAL错误无法捕获并崩溃(并重置)整个VBA环境."Stack Overflow"错误就是一个例子.