nothrow
(C++)
Microsoft-spezifisch
Ein erweitertes __declspec
Attribut, das in der Deklaration von Funktionen verwendet werden kann.
Syntax
Rückgabetyp
__declspec(nothrow)
[Call-Convention] Funktionsname ([Argumentliste])
Hinweise
Es wird empfohlen, dass der Operator anstelle von noexcept
allen neuen Code verwendet __declspec(nothrow)
wird.
Dieses Attribut weist den Compiler an, dass die deklarierte Funktion und die Funktionen, die aufgerufen werden, nie eine Ausnahme auslösen. Sie erzwingt jedoch nicht die Richtlinie. Mit anderen Worten, es wird std::terminate
niemals aufgerufen, anders als noexcept
oder im std:c++17
Modus (Visual Studio 2017, Version 15.5 und höher), throw()
.
Mit dem Modell für synchrone Ausnahmebehandlung kann der Compiler nun standardmäßig die Mechanismen der Lebensdauerverfolgung gewisser entladbarer Objekte in einer solchen Funktion eliminieren, wodurch die Codegröße erheblich reduziert wird. Angesichts der folgenden Präprozessordirektive sind die folgenden drei Funktionsdeklarationen im /std:c++14
Modus gleichwertig:
#define WINAPI __declspec(nothrow) __stdcall
void WINAPI f1();
void __declspec(nothrow) __stdcall f2();
void __stdcall f3() throw();
Im /std:c++17
Modus entspricht nicht den anderen, die verwendet __declspec(nothrow)
werden, weil sie std::terminate
ausgelöst wird, throw()
wenn eine Ausnahme von der Funktion ausgelöst wird.
Die void __stdcall f3() throw();
Deklaration verwendet die vom C++-Standard definierte Syntax. In C++17 wurde die throw()
Schlüsselwort (keyword) veraltet.
Ende Microsoft-spezifisch
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für