Re[2]: Обработка ошибок в деструкторе своего умного указателя
От: Sm0ke Россия ksi
Дата: 23.12.22 13:28
Оценка:
Здравствуйте, andyp, Вы писали:

A>Здравствуйте, Sm0ke, Вы писали:


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

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

A>Т.е. внутри деструктора в определенной точке тебе надо убедиться, что бросил твой clear а не просто что ты находишься в процессе stack unwinding или нормального завершения? Тогда на std::uncought_exceptions() и всякие scоpe guard посмотри.


Сам clear() напрямую ничего не кидает. Но в нём set и list могут бросить.

Вот код деструктора:
try {
  clear();
} catch( ... ) {
  s_state.m_target = m_target;
  s_state.m_exception = std::current_exception();
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.