Доступ ко всем необработанным исключениям из обработчика завершения - PullRequest
2 голосов
/ 26 сентября 2019

В настоящее время я следую основным правилам C ++, установив для всех деструкторов в моем коде значение noexcept.Некоторые из моих деструкторов могут потенциально генерировать исключения - в этом случае я бы хотел, чтобы программа аварийно завершилась, и предоставил мне подробную информацию о том, что вызвало сбой.Установка спецификатора noexcept в деструкторе вызовет std::terminate(), что в свою очередь вызовет значение по умолчанию terminate_handler.Значение по умолчанию terminate_handler напечатает исключение, которое было запущено внутри деструктора.Это замечательно в том случае, если метательный деструктор не был вызван во время создания другого исключения.В этом случае я бы хотел, чтобы terminate_handler напечатал оба исключения, чтобы я мог знать, что спровоцировало путь обработки ошибок.

Проблема в том, что я не могу найти путь в стандартебиблиотека, чтобы получить необработанное исключение.Есть функция std::current_exception(), которая получает обрабатываемое исключение, и std::uncaught_exceptions(), который получает только число необработанных исключений.Я хотел бы получить std::exception_ptr или что-то еще, кроме необъяснимых исключений.Это возможно?

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