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