nothrow (C++)

Sezione specifica Microsoft

Attributo __declspec esteso che può essere usato nella dichiarazione di funzioni.

Sintassi

return-type__declspec(nothrow) [call-convention] function-name ([argument-list])

Osservazioni:

È consigliabile che tutto il nuovo codice usi l'operatore noexcept anziché __declspec(nothrow).

L'attributo indica al compilatore che la funzione dichiarata e le funzioni che tale funzione chiama non generano mai un'eccezione. Tuttavia, non impone la direttiva . In altre parole, non viene std::terminate mai richiamato, a differenza noexceptdi o in std:c++17 modalità (Visual Studio 2017 versione 15.5 e successive), throw().

Con il modello di gestione delle eccezioni sincrona, per impostazione predefinita il compilatore può ora eliminare i meccanismi che consentono di tenere traccia della durata di alcuni oggetti non rimovibili in tale funzione, riducendo notevolmente la dimensione del codice. Data la direttiva del preprocessore seguente, le tre dichiarazioni di funzione seguenti sono equivalenti in /std:c++14 modalità:

#define WINAPI __declspec(nothrow) __stdcall

void WINAPI f1();
void __declspec(nothrow) __stdcall f2();
void __stdcall f3() throw();

In /std:c++17 modalità non throw() equivale agli altri che usano __declspec(nothrow) perché viene std::terminate richiamata se viene generata un'eccezione dalla funzione .

La void __stdcall f3() throw(); dichiarazione usa la sintassi definita dallo standard C++. In C++17 la throw() parola chiave è stata deprecata.

Fine sezione specifica Microsoft

Vedi anche

__declspec
noexcept
Parole chiave