I'm trying to catch an exception that is being thrown from the constructor of an object, which is in the process of being created and passed into the constructor of a std::unique_ptr
.
However, I'm unable to catch the actual exception, and instead have to rely on the ...
operator to catch the exception.
I'm using Microsoft visual C++ 2015.
Am I not able to catch exceptions when they are thrown from a constructor?
Here's my code:
#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;
}
The output I see is I am here 2
.
Aucun commentaire:
Enregistrer un commentaire