170 похожих чатов

O/ а как лучше инициализировать переменую типа, который выбрасывает исключение

в конструкторе? https://godbolt.org/z/jPfEKbY54

19 ответов

29 просмотров

выбрасывать исключение в конструкторе - плохая идея. Лучше сделать статический make метод для создания экземпляров класса, в котором уже может быть выброшено исключение

anton- Автор вопроса
Murad
выбрасывать исключение в конструкторе - плохая иде...

Я не могу менять этот класс, он из библиотеки. Да и вопрос про другое.

Cyan idle
Почему это?

обработку исключений надо выносить из конструкторов. Иначе увеличится риск потери строгой гарантии исключений.

Murad
обработку исключений надо выносить из конструкторо...

Имеете ввиду try {} catch в конструкторе не держать?

Murad
обработку исключений надо выносить из конструкторо...

Это необоснованный ничем аргумент. Нормальная практика выбрасывать исключение из конструктора и никакой потери гарантии не несет, поскольку life time объекта еще не начался.

Anatoly Shirokov
Это необоснованный ничем аргумент. Нормальная прак...

в том и дело, деструктор не будет вызван. То есть риск не высвободить какие-то ресурсы увеличивается.

Murad
в том и дело, деструктор не будет вызван. То есть ...

Фух, а я уж испугался, что в современном С++ уже какие странные новшества добавили, что все поломали.

Anatoly Shirokov
Слышал звон да не знаю где он?

терпение и труд всё перетрут

Murad
терпение и труд всё перетрут

Вообщем, все автоматические объекты инициализированные на момент выброса будут благополучно уничтожены и никакого риска утечки не будет.

anton- Автор вопроса

^

anton
^

Никаких try/catch, просто пишешь линейный код Thrower test;

anton- Автор вопроса
Anatoly Shirokov
Никаких try/catch, просто пишешь линейный код Thro...

так вылетает исключение и всё падает

anton
так вылетает исключение и всё падает

use_case тоже поместить внутрь try/catch, не? Предполагается же, что в случаи ошибки создания test внем нет смысла

Murad
выбрасывать исключение в конструкторе - плохая иде...

Вовсе нет, вполне допустимо. С++ полностью к этому готов. Нельзя выбрасывать исключения в ДЕСТРУКТОРЕ, и то при определённых условиях можно. (может ты перепутал ?)

Murad
да, лучше не держать

Можно держать, можно не держать...

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта