编译器警告(等级 1)C4532
'continue':在终止处理期间跳出 __finally/finally 块有未定义的行为
备注
编译器遇到以下关键字之一:
导致异常终止期间跳出 __finally
或 finally
程序块。
如果发生异常,并且在执行终止处理程序期间栈在展开(__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;
}
}
}