при написании кода на C++ я получил точку, где определенной структуре нужен вызов функции end()
, чтобы гарантировать, что уничтожение не выбрасывает никаких исключений.гарантирует, что некоторая функция вызывается перед уничтожением
Foo a(x,y)
~a
-> может бросить в некоторых очень плохих условиях
Foo a(x,y)
a.end()
-> возможно бросает
~a
gurantees не сгенерирует исключение
Интересно, если есть e лигантный способ заставить это ограничение (конец должен быть вызван до деконструкции) компилятором или хотя бы распечатать предупреждение?
Поздравления и благодарности
деструктор никогда не должен вызывать исключения ... – ForEveR
, но разве обертка не переместит проблему? Деструктор обертки вызовет конец, но конец может бросить, поэтому та же проблема. Я мог бы использовать try catch, но это не очень элегантно, на мой взгляд –
вопрос в том, кто будет обрабатывать это исключение? Если кто-то позвонит, позвольте ему позвонить. – kassak