std::rethrow_exception: функция принимает std::exception_ptr. Вызов делают внутри try, чтобы снаружи поймать тот же тип.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpExRp 463 of 696 menu
◀ ▶

Повтор из захвата в 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.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить