编译器警告(等级 1)C4532

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

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

导致在不正常终止期间跳出 __finallyfinally 块。

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

如果必须跳出 __finally 块,请首先检查不正常终止。

下面的示例生成 C4532;只需注释掉跳转语句即可解决此警告。

// 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;
      }
   }
}