C6310
Ostrzeżenie C6310: Niedozwolona stała w filtrze wyjątków może spowodować nieoczekiwane zachowanie
Ten komunikat wskazuje, że Niedozwolona stała został wykryty w wyrażeniu filtru obsługi structured exception.Stałe zdefiniowane do użycia w wyrażeniu filtru obsługi structured exception są:
EXCEPTION_CONTINUE_EXECUTION
EXCEPTION_CONTINUE_SEARCH
EXCEPTION_EXECUTE_HANDLER
Te wartości są zdefiniowane w excpt.h pliku nagłówka w czasie wykonywania.
Używając stałej, który nie jest z powyższej listy może spowodować nieoczekiwane zachowanie.
Przykład
Poniższy kod generuje ostrzeżenie to:
#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");
}
}
Aby poprawić to ostrzeżenie, należy użyć następującego kodu:
#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");
}
}