C6320
avviso C6320: l'espressione di filtro eccezioni è la costante EXCEPTION_EXECUTE_HANDLER.Questa condizione potrebbe mascherare eccezioni la cui gestione non è prevista
L'avviso indica l'effetto collaterale dell'utilizzo della costante EXCEPTION_EXECUTE_HANDLER in un blocco __except.In questo caso l'istruzione nel blocco __except verrà sempre eseguita per gestire le eccezioni, incluse quelle che non si desidera gestire in una determinata funzione.Si consiglia di verificare l'eccezione prima di gestirla.
Esempio
Il codice seguente genera questo avviso perché il blocco __except tenta di gestire tutti i tipi di eccezioni:
#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 ...
}
}
Per risolvere il problema, utilizzare GetExceptionCode per verificare una determinata eccezione prima di gestirla, come illustrato nel codice riportato di seguito:
#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 ...
}
}