Udostępnij za pośrednictwem


C6320

Ostrzeżenie C6320: wyrażenie filtru wyjątków jest stała wartość EXCEPTION_EXECUTE_HANDLER.To może maskować wyjątki, które nie były przeznaczone do obsługi

To ostrzeżenie wskazuje efektem ubocznym przy użyciu stałej EXCEPTION_EXECUTE_HANDLER w bloku __except.W przypadku instrukcji w __except zablokować będzie zawsze wykonać obsłużyć wyjątek, w tym wyjątków nie chcesz obsłużyć w szczególności funkcji.Zaleca się sprawdzenie wyjątek przed posługiwania się nimi.

Przykład

Poniższy kod generuje to ostrzeżenie, ponieważ __except zablokować będzie próbować obsługi wyjątków wszystkich typów:

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

void f(int *p) 
{ 
   __try
   { 
      puts("in try"); 
      *p = 13;  // might cause access violation exception
      // code ...
   } 
   __except(EXCEPTION_EXECUTE_HANDLER) // warning
   { 
      puts("in except"); 
      // code ...
   } 
} 

Aby skorygować to ostrzeżenie, należy używać GetExceptionCode Aby sprawdzić, czy szczególne wyjątek przed jej obsługi, jak pokazano w poniższym kodzie:

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

void f(int *p) 
{ 
   __try
   { 
      puts("in try"); 
      *p = 13;    // might cause access violation exception 
      // code ...
   } 
   __except(GetExceptionCode()==EXCEPTION_ACCESS_VIOLATION ? 
               EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
   { 
      puts("in except"); 
      // code ...
   } 
}

Zobacz też

Informacje

Spróbuj-z wyjątkiem wyciągu