Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'espressione di filtro delle eccezioni è la costante EXCEPTION_EXECUTE_HANDLER. Ciò potrebbe mascherare le eccezioni che non erano destinate a essere gestite
Osservazioni:
Questo avviso indica l'effetto collaterale dell'utilizzo EXCEPTION_EXECUTE_HANDLER della costante in un __except blocco. In questo caso, l'istruzione nel __except blocco verrà sempre eseguita per gestire l'eccezione, incluse le eccezioni che non si desidera gestire in una determinata funzione. È consigliabile controllare l'eccezione prima di gestirla.
Nome dell'analisi del codice: EXCEPTIONEXECUTEHANDLER
Esempio
Il codice seguente genera questo avviso perché il __except blocco tenterà di gestire le eccezioni di tutti i tipi:
#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 correggere questo avviso, usare GetExceptionCode per verificare la presenza di una particolare eccezione prima di gestirla come illustrato nel codice seguente:
#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 ...
}
}