Compartir a través de


Advertencia del compilador (nivel 1) C4532

"continue": al saltar desde el bloque __finally/finally se produce un comportamiento no definido durante el control de finalización

Comentarios

El compilador encontró una de las palabras clave siguientes:

lo que provoca un salto fuera de un bloque __finally o finally durante la finalización anómala.

Si se produce una excepción, y mientras se desenreda la pila durante la ejecución de los controladores de terminación (los bloques __finally o finally), y el código salta fuera de un bloque __finally antes de que finalice el bloque __finally, el comportamiento no es definido. Es posible que el control no vuelva al código de desenredo, por lo que es posible que la excepción no se controle correctamente.

Si debe saltar fuera de un bloque __finally, primero compruebe si hay una terminación anormal.

La opción del compilador /sdl (Habilitar comprobaciones de seguridad adicionales) eleva esta advertencia a un error.

Ejemplo

En el ejemplo siguiente se genera la advertencia C4532; elimine o convierta en comentario las instrucciones de salto para resolver las advertencias.

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