Udostępnij za pośrednictwem


C6318

Ostrzeżenie C6318: niewłaściwie zdefiniowane __try/__except: użyj stałej EXCEPTION_CONTINUE_SEARCH lub innej stałej, dla której wynik wyrażenia filtru wyjątków wyniesie zero.Kod, w bloku obsługi wyjątków, nie jest wykonywany.

To ostrzeżenie wskazuje, że jeśli w chronionym bloku strukturalnej obsługi wyjątków występuje wyjątek, wyjątek nie będzie obsłużony, ponieważ stała EXCECPTION_CONTINUE_SEARCH jest używana w wyrażeniu filtru wyjątków.

Ten kod jest równoważny z chronionym blokiem bez bloku obsługi wyjątków, ponieważ blok obsługi nie jest wykonywany.

Przykład

Poniższy kod generuje to ostrzeżenie:

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

void f (char *pch)
{
  __try 
  {
    // assignment might fail
    *pch = 0;
  } 
  __except (EXCEPTION_CONTINUE_SEARCH) // warning 6318
  {
    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>

void f (char *pch)
{
  __try 
  {
    // assignment might fail
    *pch = 0;
  } 
  __except( (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION) ?
                EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH )
  {
    puts("Access violation");
  }
} 

Zobacz też

Informacje

Spróbuj-z wyjątkiem wyciągu