Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
"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
}