throwing exceptions out of a destructor

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

Эта статья кажется, говорит иначе - бросать деструкторы более или менее хорошо.

Итак, мой вопрос заключается в следующем: если выброс из деструктора приводит к неопределенному поведению, как вы обрабатываете ошибки, возникающие во время деструктора?

Если во время операции очистки возникает ошибка, вы просто игнорируете ее? Если это ошибка, которая потенциально может быть обработана в стеке, но не в деструкторе, неЕсть ли смысл выбрасывать исключение из деструктора?

Очевидно, что такого рода ошибки редки, но возможны ".

Ответы на вопрос(16)

Ваш ответ на вопрос