Должен ли я использовать std::uncaught_Exceptions(), чтобы решить, создавать ли исключение из моего dtor? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Должен ли я использовать std::uncaught_Exceptions(), чтобы решить, создавать ли исключение из моего dtor? [закрыто]

Сообщение Anonymous »

У меня есть класс, конструктор которого вызывает вызов драйвера, а деструктор которого выполняет соответствующий вызов драйвера завершения/освобождения. Эти вызовы могут потерпеть неудачу. Проблема, конечно, в том, что такие сбои происходят в деструкторе.
Я знаю общепринятую мудрость избегать исключений в деструкторах: если вы создадите такое исключение во время раскрутки стека, ваша программа будет завершена. Но я бы предпочел не просто «проглотить» такие ошибки и не сообщить о них, если смогу.
Итак, законно/идиоматично ли писать код, говорящий:

Код: Выделить всё

~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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»