编译器警告(等级 1)C4532

'continue':在终止处理期间跳出 __finally/finally 块有未定义的行为

备注

编译器遇到以下关键字之一:

导致异常终止期间跳出 __finallyfinally 程序块。

如果发生异常,并且在执行终止处理程序期间栈在展开(__finally 或 finally 块),代码在 __finally 块结束之前跳出 __finally 块,则行为是未定义的。 控件可能不会返回到展开代码,因此可能无法正确处理异常。

如果必须跳出块 __finally,请先检查异常是否终止。

/sdl(启用附加安全检查)编译器选项会将此警告升级为错误。

示例

以下示例生成 C4532;删除或注释掉 jump 语句即可解决警告。

// C4532.cpp
// compile with: /W1
// C4532 expected
int main() {
   int i;
   for (i = 0; i < 10; i++) {
      __try {
      } __finally {
         // Delete the following line to resolve.
         continue;
      }

      __try {
      } __finally {
         // Delete the following line to resolve.
         break;
      }
   }
}