Condividi tramite


Avviso C6310

Una costante non valida nel filtro eccezioni può causare un comportamento imprevisto

Osservazioni:

Questo messaggio indica che è stata rilevata una costante non valida nell'espressione di filtro di un gestore di eccezioni strutturate. Le costanti definite per l'uso nell'espressione di filtro di un gestore di eccezioni strutturate sono:

  • EXCEPTION_CONTINUE_EXECUTION

  • EXCEPTION_CONTINUE_SEARCH

  • EXCEPTION_EXECUTE_HANDLER

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

L'uso di una costante non presente nell'elenco precedente può causare un comportamento imprevisto.

Nome dell'analisi del codice: ILLEGALEXCEPTEXPRCONST

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 correggere questo avviso, usare 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");
  }
}