編譯器警告 (層級 1) C4532
'continue' : 跳出 __finally/finally 區塊在終止處理期間有未定義的行為
備註
編譯程式遇到下列其中一個關鍵詞:
導致在異常終止期間跳出 __finally
或 finally
區塊。
如果發生例外狀況,而且當堆疊在執行終止處理程式(__finally
或最後區塊)時解除復原,而您的程序代碼會在區塊結束之前__finally
跳出__finally
區塊,則行為是未定義的。 控件可能不會返回回溯程序代碼,因此可能無法正確處理例外狀況。
如果您必須跳出 __finally
區塊,請先檢查是否有異常終止。
/sdl
(啟用額外安全性檢查) (部分機器翻譯) 編譯器選項會將這個警告升級為錯誤。
範例
下列範例會產生 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;
}
}
}