Поделиться через


Предупреждение компилятора (уровень 1) C4297

функция: ожидается, что функция не будет выдавать исключения, но она это делает

Функция содержит объявление nothrow и один или более операторов throw. Чтобы устранить ошибку C4297, не пытайтесь вызвать исключения в функциях, которые объявлены при помощи nothrow, или удалить спецификацию nothrow.

Дополнительные сведения о спецификации исключений см. в разделе Спецификации исключений. Для дополнительных сведений об изменении поведения обработки исключений во время компиляции см. раздел Параметр /EH (модель обработки исключений).

Это предупреждение также генерируется для функций __declspec(dllexport), помеченных как функции только для "C", даже если они являются функциями C++ functions.

Следующий пример приводит к возникновению ошибки C4297:

// C4297.cpp
// compile with: /W1 /LD
void __declspec(nothrow) f1()   // declared nothrow
// try the following line instead
// void f1()
{
   throw 1;   // C4297
}