对于终止处理程序的限制

不能使用 goto 语句跳入 __try 语句块或 __finally 语句块。 相反,您必须通过常规控制流进入此语句块。(但是,您可以跳出 __try 语句块。)此外,您不能将异常处理程序或终止处理程序嵌入 __finally 块。

此外,终止处理程序中允许的某些类型的代码会生成有问题的结果,因此您应小心使用它们(如果要使用)。 其中一个是跳出 __finally 语句块的 goto 语句。 如果该块正在作为正常终止的一部分执行,则不会发生任何异常。 但如果系统正在展开堆栈,则该展开会停止,并且当前函数会获取控制权,就象异常终止不存在一样。

__finally 语句块内的 return 语句存在大致相同的情况。 控制权将返回给包含终止处理程序的函数的直接调用方。 如果系统正在展开堆栈,此进程将暂停,如果没有引发过异常,则程序将继续执行。

请参见

参考

编写终止处理程序

结构化异常处理 (C/C++)