C ++ 11在创建unique_ptr

时间:2016-01-28 04:44:50

标签: c++11 unique-ptr

我正在尝试捕获从对象的构造函数抛出的异常,该异常正在创建并传递到std::unique_ptr的构造函数中。

但是,我无法捕获实际的异常,而是必须依赖...运算符来捕获异常。

我正在使用Microsoft Visual C ++ 2015。

当我从构造函数中抛出异常时,我无法捕获异常吗?

这是我的代码:

#include <memory>
#include <exception>
#include <iostream>

class Test
{
public:
    Test()
    {
        throw new std::exception("this is a test");
    }
};

int main()
{
    try
    {
        auto test = std::unique_ptr<Test>(new Test());
    }
    catch (const std::exception& e)
    {
        std::cout << "I am here" << std::endl;
    }
    catch (...)
    {
        std::cout << "I am here 2" << std::endl;
    }

    return 0;
}

我看到的输出是I am here 2

1 个答案:

答案 0 :(得分:1)

好吧,在看了我自己的问题一分钟后,我意识到我正在使用std::exception运算符创建new对象。

删除new运算符后,它会按预期工作。