Обработка ошибок в деструкторе своего умного указателя
От: Sm0ke Россия ksi
Дата: 23.12.22 06:04
Оценка:
Всем доброго времени суток.
Написал свой класс умного указателя. В нём есть приватный метод clear(), в котором использую std::set и std::list как тип локальных переменных. Их значения не выходят за пределы этого метода, а служат просто для сбора данных.

Собственно при работе с этой динамической памятью могут быть выкинуты исключения, которые я в самом clear() не ловлю. Но мне нужно вызвать clear() из деструктора класса.

Пока что внутри деструктора Обернул вызов clear() в try, и при catch пишу инфу в статическое свойство s_state — структура с полем std::exception_ptr.

Это решение мне не очень нравится, ведь надо думать на каком моменте проверять этот статик s_state и как на это реагировать. А при разрушении контейнера с моими указателями он может перезатераться...

Посоветуйте как лучше сделать? Не кидать же исключения из деструктора?
Кста: нужен-ли язык, где Деструктор может вернуть значение?

Доп инфа: в некоторых случаях clear() удаляет сам target object без локальных list set, в других вызывает у таргета unset(), но сперва типо убирает своего хоста у target.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.