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");
}
}