Я знаю общепринятую мудрость избегать исключений в деструкторах: если вы создадите такое исключение во время раскрутки стека, ваша программа будет завершена. Но я бы предпочел не просто «проглотить» такие ошибки и не сообщить о них, если смогу.
Итак, законно/идиоматично ли писать код, говорящий:
Код: Выделить всё
~MyClass() noexcept(false) {
auto result = something_which_may_fail_but_wont_throw();
if (std::uncaught_exceptions() == 0) {
throw some_exception(result);
}
}
Примечание. Этот класс не имеет доступа к стандартным потокам вывода/ошибок, а также к журналу и т. д.
Подробнее здесь: https://stackoverflow.com/questions/746 ... n-exceptio
Мобильная версия