Я пытаюсь поймать исключение, которое бросается из конструктора объекта, который находится в процессе создания и передается в конструктор std::unique_ptr
,C++ 11 исключение исключения из конструктора при создании 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
.
Ex Javite? Лучше просто забыть о новых возможностях как можно больше. Вы даже должны избегать использования new для создания unique_ptr, используйте make_unique (если вы не можете использовать C++ 14, вы можете легко выполнить его резервное копирование). –