“continue”: 在终止处理期间从 __finally/finally 块跳出的行为未定义
编译器遇到了下列关键字之一:
导致在不正常终止期间跳出 __finally 或 finally 块。
如果发生异常,并且在终止处理程序(__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;
}
}
}