Re: Для чего отключать обработку исключений?
От: sergii.p  
Дата: 12.06.18 09:22
Оценка: -1 :)
Здравствуйте, Максим Рогожин, Вы писали:

МР>Привет всем!


МР>В 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;
}
Отредактировано 12.06.2018 9:35 sergii.p . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.