Большинство людей говорят, что никогда не выбрасывать исключение из деструктора - это приводит к поведению undefined. Строуструп подчеркивает, что "вектор-деструктор явно вызывает деструктор для каждого элемента. Это означает, что если элемент деструктор бросает, уничтожение вектора терпит неудачу... Существует действительно никакой хороший способ защитить от исключений, выведенных из деструкторов, поэтому библиотека не дает гарантий, если элемент деструктор выбрасывает" (из Приложения E3.2).
В этой статье, как представляется, говорится об обратном: бросание деструкторов более или менее хорошо.
Итак, мой вопрос заключается в том, что, если бросок из деструктора приводит к поведению undefined, как вы обрабатываете ошибки, возникающие во время деструктора?
Если во время операции очистки происходит ошибка, вы просто игнорируете ее? Если это ошибка, которая потенциально может быть обработана стеком, но не права в деструкторе, не имеет смысла бросать исключение из деструктора?
Очевидно, что такие ошибки встречаются редко, но возможны.