Повтор из захвата в C++
Сохраненное исключение снова бросает
std::rethrow_exception: функция
принимает std::exception_ptr.
Вызов делают внутри try, чтобы снаружи
поймать тот же тип или базовый
std::exception. Сначала сохраним
ошибку, затем поднимем ее из указателя
и выведем текст:
#include <exception>
#include <iostream>
#include <stdexcept>
int main() {
std::exception_ptr held;
try {
throw std::runtime_error("from ptr");
} catch (...) {
held = std::current_exception();
}
try {
std::rethrow_exception(held);
} catch (const std::exception& err) {
std::cout << err.what() << "\n";
}
return 0;
}
Сохраните в std::exception_ptr
исключение std::logic_error с текстом
"logic". Вызовите
std::rethrow_exception и выведите
what во внешнем catch.