Share via


对于终止处理程序的限制

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

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

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

另请参阅

编写终止处理程序
Structured Exception Handling (C/C++)