Некоторые вызовы вызывают разматывание стека, хотя исключение C++ не выдается

Я использую Visual Studio Native Unit Test Framework для C++. Когда утверждение не выполняется, следующие операторы не выполняются и вызываются деструкторы локальных объектов, поэтому создается впечатление, что выдается исключение, но я не могу перехватить любое исключение C++ с помощью catch (...) пункт. После некоторых экспериментов я заметил, что __int2c() Например, вызов (который запускает прерывание 2с из-за документации) имеет тот же эффект. К этому дню я знал только об исключениях, которые имеют такое поведение. Не могли бы вы дать мне подсказку о том, что может быть причиной в этом случае?

ОБНОВИТЬ:

Вот пример кода

void func()
{
    struct Foo
    {
        ~Foo()
        {
            // this code is executed
        }
    };

    Foo foo;

    try
    {
        Assert::IsTrue(false);
    }
    catch (...)
    {
        // this code is not executed 
    }

    // this code is not executed
}

0 ответов

Другие вопросы по тегам