бросать исключения из деструктора
большинство людей говорят никогда выбросить исключение из деструктора-это приводит к неопределенному поведению. Страуструп подчеркивает, что "вектор деструктор явно вызывает деструктор для каждого элемента. Это означает, что если элемент деструктор бросает, вектор разрушения не удается... На самом деле нет хорошего способа защиты от исключений, вызванных деструкторами, поэтому библиотека не дает никаких гарантий, если деструктор элемента бросает " (из приложения Е3.2).
в этой статье кажется, говорят иначе-что метательные деструкторы более или менее в порядке.
Итак, мой вопрос таков-если бросание из деструктора приводит к неопределенному поведению, как вы обрабатываете ошибки, которые происходят во время деструктора?
Если во время операции очистки возникает ошибка, вы просто игнорируете ее? Если это ошибка, которая потенциально может быть обработана вверх по стеку, но не прямо в деструкторе, разве нет смысла выбрасывать исключение из деструктора?
очевидно, что такие ошибки редки, но возможны.
Comments