Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
"function" : funktionen antas inte utlösa ett undantag, men gör det
Anmärkningar
En funktionsdeklaration innehåller en (möjligen implicit) noexcept specificerare, en tom throw undantagsspecificerare eller ett __declspec-attribut (nothrow) och definitionen innehåller en eller flera throw-instruktioner . Lös C4297 genom att inte försöka utlösa undantag i funktioner som deklareras __declspec(nothrow), noexcept(true) eller throw(). Du kan också ta bort specifikationen noexcept, throw()eller __declspec(nothrow) .
Som standard genererar kompilatorn implicita noexcept(true) specificerare för användardefinierade destruktorer och deallocatorfunktioner och kompilatorgenererade specialmedlemsfunktioner. Detta överensstämmer med STANDARDEN ISO C++11. Om du vill förhindra generering av implicita noexcept-specificerare och återställa kompilatorn till det icke-standardmässiga beteendet i Visual Studio 2013 använder du alternativet /Zc:implicitNoexcept- compiler. Mer information finns i /Zc:implicitNoexcept (implicita undantagsspecificerare).
Mer information om undantagsspecifikationer finns i Undantagsspecifikationer (utkast). Se även /EH (undantagshanteringsmodell) för information om hur du ändrar beteendet för undantagshantering vid kompileringstillfället.
Den här varningen genereras också för __declspec(dllexport) funktioner markerade externt "C", även om de är C++-funktioner.
Example
I följande exempel genereras C4297:
// C4297.cpp
// compile with: /W1 /LD
void __declspec(nothrow) f1() // declared nothrow
// try the following line instead
// void f1()
{
throw 1; // C4297
}