Condividi tramite


C6310

avviso C6310: una costante non valida nel filtro eccezioni può provocare comportamenti imprevisti

Il messaggio indica che è stata rilevata una costante non valida nell'espressione di filtro di un gestore delle eccezioni strutturato.Le costanti definite per l'utilizzo nell'espressione di filtro di un gestore delle eccezioni strutturato sono:

  • EXCEPTION_CONTINUE_EXECUTION

  • EXCEPTION_CONTINUE_SEARCH

  • EXCEPTION_EXECUTE_HANDLER

Questi valori sono definiti nel file di intestazione runtime excpt.h.

L'utilizzo di una costante non inclusa nell'elenco precedente può determinare un comportamento imprevisto.

Esempio

Il codice seguente genera questo avviso:

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

BOOL LimitExceeded();

void fd( )
{
  __try 
  {
    if (LimitExceeded()) 
    {
      RaiseException(EXCEPTION_ACCESS_VIOLATION,0,0,0);
    }
    else
    {
      // code 
    }
  } 
  __except (EXCEPTION_ACCESS_VIOLATION)
  {
    puts("Exception Occurred");
  }
}

Per risolvere il problema, utilizzare il codice seguente:

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

BOOL LimitExceeded();

void fd( )
{
  __try 
  {
    if (LimitExceeded()) 
    {
      RaiseException(EXCEPTION_ACCESS_VIOLATION,0,0,0);
    }
    else
    {
      // code 
    }
  } 
  __except (GetExceptionCode()==EXCEPTION_ACCESS_VIOLATION ? 
               EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
  {
    puts("Exception Occurred");
  }
}