Avviso C6320

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

Vedi anche

Istruzione try-except