コンパイラの警告 (レベル 1) C4532

'continue': 終了処理時に、__finally/finally ブロックからのジャンプの動作が定義されていません

解説

コンパイラは、次のいずれかのキーワードを検出しました。

異常終了中に、a または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;
      }
   }
}