в конструкторе? https://godbolt.org/z/jPfEKbY54
выбрасывать исключение в конструкторе - плохая идея. Лучше сделать статический make метод для создания экземпляров класса, в котором уже может быть выброшено исключение
Я не могу менять этот класс, он из библиотеки. Да и вопрос про другое.
обработку исключений надо выносить из конструкторов. Иначе увеличится риск потери строгой гарантии исключений.
Имеете ввиду try {} catch в конструкторе не держать?
да, лучше не держать
Это необоснованный ничем аргумент. Нормальная практика выбрасывать исключение из конструктора и никакой потери гарантии не несет, поскольку life time объекта еще не начался.
в том и дело, деструктор не будет вызван. То есть риск не высвободить какие-то ресурсы увеличивается.
Слышал звон да не знаю где он?
Фух, а я уж испугался, что в современном С++ уже какие странные новшества добавили, что все поломали.
терпение и труд всё перетрут
Вообщем, все автоматические объекты инициализированные на момент выброса будут благополучно уничтожены и никакого риска утечки не будет.
^
Никаких try/catch, просто пишешь линейный код Thrower test;
так вылетает исключение и всё падает
use_case тоже поместить внутрь try/catch, не? Предполагается же, что в случаи ошибки создания test внем нет смысла
Вовсе нет, вполне допустимо. С++ полностью к этому готов. Нельзя выбрасывать исключения в ДЕСТРУКТОРЕ, и то при определённых условиях можно. (может ты перепутал ?)
Можно держать, можно не держать...
Обсуждают сегодня