我正在尝试捕获从对象的构造函数抛出的异常,该异常正在创建并传递到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
。
答案 0 :(得分:1)
好吧,在看了我自己的问题一分钟后,我意识到我正在使用std::exception
运算符创建new
对象。
删除new
运算符后,它会按预期工作。