Compartir a través de


C6320

Actualización: noviembre 2007

C6320

Advertencia C6320: La expresión de filtro de excepciones es la constante EXCEPTION_EXECUTE_HANDLER. Esto puede enmascarar excepciones que no se esperaba que se controlaran

Esta advertencia indica el efecto secundario de utilizar la constante EXCEPTION_EXECUTE_HANDLER en el bloque __except. En este caso, la instrucción del bloque __except siempre se ejecutará y controlará la excepción, incluidas las excepciones que no desee controlar de una función determinada. Se recomienda comprobar la excepción antes de controlarla.

Ejemplo

El código siguiente genera esta advertencia porque el bloque __except intentará controlar las excepciones de todos los tipos:

#include <stdio.h> 
#include <excpt.h> 

void f(int *p) 
{ 
   __try
   { 
      puts("in try"); 
      *p = 13;  // might cause access violation exception
      // code ...
   } 
   __except(EXCEPTION_EXECUTE_HANDLER) // warning
   { 
      puts("in except"); 
      // code ...
   } 
} 

Para corregir esta advertencia, use GetExceptionCode con el fin de efectuar la comprobación de una excepción determinada antes de controlarla, como se muestra en el código siguiente:

#include <stdio.h> 
#include <windows.h> 
#include <excpt.h> 

void f(int *p) 
{ 
   __try
   { 
      puts("in try"); 
      *p = 13;    // might cause access violation exception 
      // code ...
   } 
   __except(GetExceptionCode()==EXCEPTION_ACCESS_VIOLATION ? 
               EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
   { 
      puts("in except"); 
      // code ...
   } 
}

Vea también

Referencia

try-except Statement