Dela via


Kompilatorvarning (nivå 1) C4532

"fortsätt" : hoppa ut ur __finally/slutligen blockera har odefinierat beteende under avslutningshantering

Anmärkningar

Kompilatorn påträffade något av följande nyckelord:

orsakar ett hopp ut ur en __finally- eller finally-block under onormal avslutning.

Om ett undantag inträffar och medan stacken ångras under körningen av avslutningshanterarna (som __finally eller ett finally-block) och koden hoppar ur ett __finally-block innan __finally-blocket avslutas, är beteendet odefinierat. Kontrollen kanske inte återgår till avspolningskoden, så undantaget kanske inte hanteras korrekt.

Om du måste hoppa ut ur ett __finally block, kontrollerar du om det finns en onormal avslutning först.

Kompileringsalternativet (Aktivera ytterligare säkerhetskontroller) höjer varningen till ett fel./sdl

Example

I följande exempel genereras C4532; ta bort eller kommentera ut hoppinstruktionerna för att lösa varningarna.

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