После 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. Неправильный доступ к памяти, но почему?