Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
'função' : função assumida para não lançar uma exceção, mas não
Observações
Uma declaração de função contém um especificador (possivelmente implícito) noexcept, um especificador de exceção vazio throw ou um atributo __declspec(nothrow), e a definição contém uma ou mais instruções throw. Para resolver C4297, não tente lançar exceções em funções que são declaradas __declspec(nothrow)ou noexcept(true)throw(). Como alternativa, remova a especificação noexcept, throw() ou __declspec(nothrow).
Por padrão, o compilador gera especificadores implícitos noexcept(true) para destrutores definidos pelo utilizador, funções de desalocação e funções de membro especiais geradas pelo compilador. Isso está em conformidade com a norma ISO C++11. Para evitar a geração de especificadores implícitos noexcept e reverter o comportamento do compilador para a versão não padrão do Visual Studio 2013, use a opção de compilador /Zc:implicitNoexcept-. Para obter mais informações, consulte /Zc:implicitNoexcept (Implicit Exception Specifiers).
Para obter mais informações sobre especificações de exceção, consulte Especificações de exceção (throw). Além disso, consulte /EH (Exception Handling Model) para obter informações sobre como modificar o comportamento de tratamento de exceções em tempo de compilação.
Este aviso também é gerado para funções __declspec(dllexport) marcadas como externas "C", mesmo que sejam funções C++.
Example
O exemplo a seguir gera C4297:
// C4297.cpp
// compile with: /W1 /LD
void __declspec(nothrow) f1() // declared nothrow
// try the following line instead
// void f1()
{
throw 1; // C4297
}