Compartir a través de


Advertencia C6320

La expresión de filtro de excepciones es la constante EXCEPTION_EXECUTE_HANDLER. Esto puede enmascarar excepciones que no estaba previsto que se controlaran.

Comentarios

Esta advertencia indica el efecto secundario del uso EXCEPTION_EXECUTE_HANDLER de constantes en un __except bloque. En este caso, la instrucción del __except bloque siempre se ejecutará para controlar la excepción, incluidas las excepciones que no quería controlar en una función determinada. Se recomienda comprobar la excepción antes de controlarla.

Nombre de análisis de código: EXCEPTIONEXECUTEHANDLER

Ejemplo

El código siguiente genera esta advertencia porque el __except bloque intentará controlar 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 para comprobar si hay 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 ...
   }
}

Consulte también

try-except (Instrucción)