std :: rethrow (std :: exception_ptr) не работает - PullRequest
0 голосов
/ 22 января 2020

После JAVA мне пришлось заняться C ++. Простейший пример, но он не работает для меня:

#include <iostream>

void handle_exceptions(std::exception_ptr e);

   std::exception_ptr e;   

int main()
{


    try {
        throw new std::exception("test");
    }
    catch (...) {
        e = std::current_exception();
        handle_exceptions(e);
    }
} // END: main

void handle_exceptions(std::exception_ptr e)
{

    try {

        if (e) { std::rethrow_exception(e); }

    }
    catch (const std::exception & e) {

        std::cerr << std::endl << e.what();
        std::exit(0);
    }
} // END: handle_exception()

Строка std :: rethrow генерирует необработанное исключение: Возникло необработанное исключение по адресу 0x766A08B2 в ConsoleApplication1.exe: исключение Microsoft C ++: std :: исключение по адресу памяти 0x00BAF1F0.

Возможно, std :: exception_ptr не равно NULL. Неправильный доступ к памяти, но почему?

1 Ответ

2 голосов
/ 22 января 2020

Изменить

throw new std::exception("test");

на

throw std::exception("test");

Кстати, std :: exception ("test") с "test", переданным в качестве аргумента, не компилируется в моем случае с г ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...