nothrow (C++)

Блок, относящийся только к системам Microsoft

Расширенный атрибут __declspec, который может быть использован в объявлении функций.

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

Заметки

Этот атрибут сообщает компилятору, что и объявленная функция, и функции, которые она вызывает, никогда не создают исключений. Поскольку по умолчанию теперь используется модель синхронной обработки исключений, то компилятор может исключить механизм, позволяющий отслеживать время существования удаляемых объектов в такой функции, и значительно уменьшить объем кода. В следующей директиве препроцессора все три объявления функций эквивалентны:

#define WINAPI __declspec(nothrow) __stdcall 

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

Объявление void __declspec(nothrow) __stdcall f2(); имеет то преимущество, что оно позволяет использовать определение API (в нашем примере это сделано при помощи оператора #define), чтобы легко задать ключевое слово nothrow для набора функций. Третье объявление, void __stdcall f3() throw(); имеет синтаксис, определенный стандартом C++.

Дополнительные сведения см. в разделе Синхронная обработка исключений.

Завершение блока, относящегося только к системам Microsoft

См. также

Ссылки

__declspec

Ключевые слова в C++