Condividi tramite


C6318

avviso C6318: __try/__except definiti in modo non corretto: utilizzo della costante EXCEPTION_CONTINUE_SEARCH o di un'altra costante che restituisce zero nell'espressione di filtro eccezioni. Il codice nel blocco del gestore eccezioni non viene eseguito

Questo avviso indica che se si verifica un'eccezione nel blocco protetto di questo gestore eccezioni strutturato, l'eccezione non verrà gestita poiché la costante EXCECPTION_CONTINUE_SEARCH viene utilizzata nell'espressione di filtro eccezioni.

Il codice è equivalente al blocco protetto senza il blocco del gestore eccezioni, in quanto quest'ultimo non viene eseguito.

Esempio

Il codice seguente genera questo avviso:

#include <excpt.h>
#include <stdio.h>

void f (char *pch)
{
  __try 
  {
    // assignment might fail
    *pch = 0;
  } 
  __except (EXCEPTION_CONTINUE_SEARCH) // warning 6318
  {
    puts("Exception Occurred");
  }
}

Per risolvere il problema, utilizzare il codice seguente:

#include <excpt.h>
#include <stdio.h>
#include <windows.h>

void f (char *pch)
{
  __try 
  {
    // assignment might fail
    *pch = 0;
  } 
  __except( (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION) ?
                EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH )
  {
    puts("Access violation");
  }
} 

Vedere anche

Riferimenti

try-except Statement