Sdílet prostřednictvím


C6320

upozornění C6320: je EXCEPTION_EXECUTE_HANDLER konstantní výraz filtru výjimky.To může maskovat výjimky, které nejsou určeny ke zpracování

Toto upozornění znamená vedlejším účinkem konstantou EXCEPTION_EXECUTE_HANDLER v __except bloku.V tomto případě příkaz v __except blokování bude vždy provést zpracování výjimek, včetně výjimek nechtěli zpracovávat v určité funkce.Je vhodné zkontrolovat výjimku před manipulací s ní.

Příklad

Následující kód vygeneruje tato upozornění, protože __except blokovat bude při pokusu o zpracování výjimek všechny typy:

#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 ...
   } 
} 

Chcete-li opravit toto upozornění, použijte GetExceptionCode vyhledat určité výjimky před manipulací s jak je ukázáno v následujícím kódu:

#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 ...
   } 
}

Viz také

Referenční dokumentace

Zkuste-s výjimkou prohlášení