Compartilhar via


C6318

Aviso C6318: __try mal definido / __except: usar a constante EXCEPTION_CONTINUE_SEARCH ou outra constante que é avaliada como zero na expressão de filtro de exceção.O código no bloco do manipulador de exceção não é executado.

Este aviso indica que se ocorrer uma exceção no bloco protegido desse manipulador de exceção estruturada, a exceção não ocorrerão porque a constante EXCECPTION_CONTINUE_SEARCH é usado na expressão do filtro de exceção.

Esse código é equivalente ao bloco protegido sem o bloco do manipulador de exceção, porque o bloco de manipulador não é executado.

Exemplo

O código a seguir gera este aviso:

#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");
  }
}

Para corrigir esse aviso, use o código a seguir:

#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");
  }
} 

Consulte também

Referência

Tente-exceto instrução