有些调用导致堆栈展开,但没有抛出C ++异常

时间:2018-05-16 20:23:11

标签: exception visual-c++ assert stack-unwinding

我使用Visual Studio Native Unit Test Framework for C ++。当断言失败时,下一个语句不会被执行并且本地对象析构函数被调用,所以它似乎抛出异常,但我无法通过catch (...)子句捕获任何C ++异常。经过一些实验,我注意到__int2c()调用(由于文档而触发2c中断),例如,具有相同的效果。到目前为止,我只知道有这种行为的异常。你能否给我一些关于这种情况可能是什么原因的暗示?

更新

这是一个代码示例

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 个答案:

没有答案