std::exception_ptr в C++ — тип-указатель на копию текущего исключения, которую можно хранить после выхода из catch.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpExCp 462 of 696 menu
◀ ▶

Захват исключения в C++

Копию исключения хранит std::exception_ptr - тип-указатель на копию текущего исключения, которую можно хранить после выхода из catch.

Получить копию помогает std::current_exception из заголовка #include <exception> внутри обработчика. Запишем захват в переменную без немедленного повторного броска:

#include <exception> #include <iostream> #include <stdexcept> int main() { std::exception_ptr held; try { throw std::runtime_error("stored"); } catch (...) { held = std::current_exception(); } std::cout << static_cast<bool>(held) << "\n"; return 0; }

После блока try объект held остается ненулевым и пригоден для std::rethrow_exception позже, в другом месте программы или потоке.

В main объявите std::exception_ptr box. Бросьте std::logic_error с текстом "box", в catch(...) сохраните указатель через std::current_exception. Выведите 1, если box не пуст.

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