Некоторые вызовы вызывают разматывание стека, хотя исключение C ++ не выдается - PullRequest
0 голосов
/ 16 мая 2018

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

UPDATE:

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

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
}
...