Здравствуйте, Максим Рогожин, Вы писали:
МР>Привет всем!
МР>В Visual Studio есть опция для отключения обработки исключений: C/C++ -> Code Generation -> Enable C++ exceptions
МР>Скажите, пожалуйста, для чего может быть нужно отключать исключения в C++ коде? И как это вообще возможно, ведь, например оператор new или классы STL могут выбрасывать исключения.
исключения не отключаются. Это видимо неудачное название. Если выбрать Enable C++ exceptions — No, то не будут отрабатывать деструкторы для объектов. Я не понимаю, зачем это может быть нужно (видимо только если у нас исключения не водятся и разматывать стек не требуется), но компилятор студии warning выдаст (C4530 и в рекомендациях предложит включить /EHsc обратно).
class Test
{
public:
Test() = default;
~Test()
{
std::cout << U"Без /EHsc вызваться мне не судьба" << std::endl;
}
};
void throwException()
{
Test t;
throw std::exception();
}
int main()
{
__try
{
throwException();
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
std::cout << "SEH execute handler" << std::endl;
}
return 0;
}