Delen via


Compilerwaarschuwing (niveau 1) C4532

'doorgaan': springen uit het __finally block heeft ongedefinieerd gedrag tijdens de afhandeling van de beëindiging

Opmerkingen

De compiler heeft een van de volgende trefwoorden aangetroffen:

veroorzaakt een sprong uit een __finally of finally blok bij een abnormale beëindiging.

Als er een uitzondering optreedt en terwijl de stack wordt afgewikkeld tijdens de uitvoering van de beëindigingshandlers (de __finally of ten slotte blokken), en uw code uit een __finally blok springt voordat het __finally blok eindigt, is het gedrag niet gedefinieerd. Het is mogelijk dat de controle niet terugkeert naar de ontkoppelcode, waardoor de uitzondering mogelijk niet goed wordt afgehandeld.

Als u uit een __finally blok moet springen, controleer eerst of er een abnormale beëindiging is.

Met de /sdl compileroptie (Aanvullende beveiligingscontroles inschakelen) wordt deze waarschuwing uitgebreid naar een fout.

Example

In het volgende voorbeeld wordt C4532 gegenereerd; verwijder of commentarieer de jump-instructies om de waarschuwingen op te heffen.

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