|
0 / 0 / 0
Регистрация: 15.10.2022
Сообщений: 31
|
|
Как обработать ошибку в конструкторе без исключений?14.12.2022, 23:37. Показов 1522. Ответов 9
Метки нет (Все метки)
У нас есть класс в конструкторе которого может возникнуть ошибка. Как её вернуть данные об ошибке без исключений, если конструкторы не могут вернуть значение? Приводите пример кода, пожалуйста.
0
|
|
| 14.12.2022, 23:37 | |
|
Ответы с готовыми решениями:
9
Обход директорий: как обработать ошибку открытия папки без выхода из цикла? Как сделать без исключений fs как обработать ошибку? |
|
Любитель чаепитий
|
||||||
| 15.12.2022, 07:59 | ||||||
0
|
||||||
|
0 / 0 / 0
Регистрация: 15.10.2022
Сообщений: 31
|
|
| 15.12.2022, 17:19 [ТС] | |
|
GbaLog-, а можно ли сделать переменную в классе? Например: Errortype a. И если удачно создается объект, то делаем так: a = SUCCESS, а если ошибка, то a = ERROR или другой тип ошибки. Но тратится больше памяти, ведь на каждый объект создается Errortype переменная. В чем плюсы и минусы такого способа?
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
||
| 15.12.2022, 17:29 | ||
|
2) можно вынести всю инициализацию в отдельный метод init() и проверять его вовзращаемое значение.
0
|
||
|
0 / 0 / 0
Регистрация: 15.10.2022
Сообщений: 31
|
|
| 15.12.2022, 20:04 [ТС] | |
|
DrOffset, мне не нравится версия с фабричным методом, ведь там нужно делать динамическую инициализацию. А с init() не очень, ведь хочется сразу в конструкторе инициализировать члены класса, а не с init(). Давайте приведу пример. У нас есть игра, где человек может создать куб с помощью класса Cube(в конструкторе указываются параметры и 3 координаты), я хочу сделать, чтобы если эти координаты выше максимальных координат, указанных в константах maxCoordsX, Y, Z, то возвращалась ошибка из enum Error с названием MAX_COORDS_ERROR. Возможно немного странный способ, но просто хочеться узнать тонкости языка в конкретных ситуациях. Как это сделать? Повторюсь, что исключения не подходят.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
||||
| 15.12.2022, 20:21 | ||||
|
Добавлено через 6 минут Да, можно сделать состояние ошибки частью корректного состояния объекта (вы это предложили сами выше), но это неоднозначное решение, в некоторых случаях оно уместно (например, если это класс результата SQL запроса - его объект в двух состояниях может быть - в режиме результата и в режиме ошибки ), но чаще всего, если у вас нет корректных данных для создания объекта, то этот объект вовсе не должен создаваться. Вот такая тонкость.
0
|
||||
|
0 / 0 / 0
Регистрация: 15.10.2022
Сообщений: 31
|
|
| 15.12.2022, 20:45 [ТС] | |
|
DrOffset, можете привести пример фабрики без динамической инициализации? Буду признателен
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|||||||
| 15.12.2022, 21:01 | |||||||
|
Возьму пример GbaLog- за основу. Надеюсь он не будет против.
0
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||||
| 16.12.2022, 01:57 | |||||||||||||||||
|
классика жанра - дизайн std::fstream https://rextester.com/XKV38960
который возвращает true, если с объектом все в порядке, и false, если объект находится в нерабочем состоянии. тот же самый дизайн используется, например, смартпоинтерами
в твоем случае тоже можно сделать что-то вроде:
0
|
|||||||||||||||||
|
0 / 0 / 0
Регистрация: 15.10.2022
Сообщений: 31
|
|
| 16.12.2022, 11:36 [ТС] | |
|
hoggy, в классе fstream есть переменная bool, которая проверяется оператором !. Верно?
0
|
|
| 16.12.2022, 11:36 | |
|
Помогаю со студенческими работами здесь
10
Как обработать ошибку Как вызвать конструктор с параметрами в конструкторе без параметров?
Как правильно обработать ошибку? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|