powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция инициализации или исключение в конструкторе?
25 сообщений из 60, страница 2 из 3
Функция инициализации или исключение в конструкторе?
    #40050035
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
mayton,
Ну какие Райзе в потоках

Заратустра не велит?
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050036
L.Otujktd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petrav,

Я бы исходил из того, насколько критично будет использовать объект с дефолтными настройками. Но в любом случае надо как-то юзеру или клиентскому коду дать понять что инициализация прошла не так как ожидалась. Init вполне может бросить исключение, вполне рабочий вариант. Ну и добавить метод IsDefault.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050038
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут - вопрос смыслов. Что вернет конструктор. Конструктор не может вернуть недо-созданный объект.
Помним RAII. Конструктор конфигурации - должен вернуть конфигурацию. Значит - безсмысленно
возвращать конечный автомат который ждет вызова какой-то функции которая еще что-то будет
делать типа init и прочее. Если вы - делаете так - тогда меняйте смыслы. Переименовывайте
этот объект в парсер конфигураций. Вобщем как говорил кэп Врунгель - как вы яхту назовёте - так
она и плывет.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050040
L.Otujktd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Тут получается да, один объект порождает другой. Т.е. если совсем не смогли прочитать ini файл то можно вернуть нулевой указатель на объект с конфигурацией, если смогли прочитать только часть то можно сгенерировать развёрнутый эксепшен и дальше уже решать что делать
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050044
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L.Otujktd,
Что значит не смогли прочитать?
Отсюда и идёт вилка вариантов на миллион.
15 причин и 15 путей решения.
Чё их все тут в топике обсуждать?
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050045
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он в шапке пишет - "Философский вопрос..."
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050049
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Ага. Вопросы философии которые нельзя применить на практике.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050050
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
У меня сейчас прога в систрее переключает раскладку клавы.
Периодически при старте системы антивирус грохает её ini файл.
Потом она грузится и печально пишет: "не найден файл настроек. Восстановить из копии"?
Все логично, ясно и понятно.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050057
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
У меня сейчас прога в систрее переключает раскладку клавы.
Периодически при старте системы антивирус грохает её ini файл.

Жалко, что этот антивирус при каждой загрузке ОС тебе не грохает все средства
разработки как потенциально вредное и небезопасное в твоих руках ПО (разработки).
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050104
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
PetroNotC Sharp
пропущено...
+1
Как раз показывает что теоретический вопрос разбивается о практику.
Если удалили ini файл, это не значит что мы должны застопорить ИС.
И сообщить всегда можно все что угодно.

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


petrav,
Твое?
Твою логику никто не понял.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050151
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Dimitry Sibiryakov
Где-то в глубинах корпоративной сети стоит сервер на котором крутится Самая Главная База.
Какие настройки ты пропишешь по умолчанию для подключения к ней?

Пишешь
Код: plaintext
1.
2.
3.
4.
host : localhost
port : 1551
user : scott
pwd : tiger


Конструктор конфигов отрабатывает успешно. Не падает. Цель - достигнута.

Опция успеха подключения к БД - это уже вторая задача и ее надо изучать отдельно от первой.

Это то о чём я и говорю: дальнейшая работа бессмысленна. А иногда и вредна.

Допустим в поле host у нас ошибка, IP записан так: 12.12.12-12. Запускаемся, отображаем MsgBox о
том, что ошибка в конфиге. И заменяем IP на localhost. Пользователь думает: чё это было, дайка винду
перезагружу. Перезагружается, а там уже localhost в настройках записано!

И никаких ошибок уже не отображается. Он нажимает Connect. Ошибка. И теперь пользователь думает:
сеть барахлит, дайка я отдохну пока они БД поднимают, ведь работа невозможна, все отдыхают.

Вот зачем такое? :)
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050155
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
>Допустим в поле host у нас ошибка, IP записан так: 12.12.12-12.
== ошибки из воздуха не появляются. Файл ini это не мусора.
Не можешь работать с ini бери субд или xml с валидацией по схеме.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050166
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
пропущено...

Пишешь
Код: plaintext
1.
2.
3.
4.
host : localhost
port : 1551
user : scott
pwd : tiger


Конструктор конфигов отрабатывает успешно. Не падает. Цель - достигнута.

Опция успеха подключения к БД - это уже вторая задача и ее надо изучать отдельно от первой.

Это то о чём я и говорю: дальнейшая работа бессмысленна. А иногда и вредна.

Допустим в поле host у нас ошибка, IP записан так: 12.12.12-12. Запускаемся, отображаем MsgBox о
том, что ошибка в конфиге. И заменяем IP на localhost. Пользователь думает: чё это было, дайка винду
перезагружу. Перезагружается, а там уже localhost в настройках записано!

И никаких ошибок уже не отображается. Он нажимает Connect. Ошибка. И теперь пользователь думает:
сеть барахлит, дайка я отдохну пока они БД поднимают, ведь работа невозможна, все отдыхают.

Вот зачем такое? :)

Я тебе просто принцип показал. И IP адрес не имеет значения. Ты мог добавить свойство

Код: plaintext
1.
enableConnection : false



И приложение будет пропускать попытку коннекта, сообщаяя пользователю что конфигурация
еще не завершена. Как отображать - это другая тема, которая к топику не имеет отношения.
Главная цель достигнута. Твой конструктор не падает.

Ты ведь этого хотел?
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050172
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Когда это у меня конструктор падал?
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050176
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай в начало вернемся. В твой самый первый филососфкий пост. Ты пишешь про бросание исключений из конструктора.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050195
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Давай в начало вернемся. В твой самый первый филососфкий пост. Ты пишешь про бросание исключений из конструктора.

Исключение из конструктора — это не падение конструктора. Это не проблема. Это приём
программирования: если объект не может быть создан корректно, то он и не создаётся. И
соответственно в последствии не разрушается.

В этом и есть вопрос: стоит ли этим пользоваться в подобных ситуациях. Не стоял вопрос:
у меня конструктор падает, памагите.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050200
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Тебе вроде ответили несколько человек что есть практика гарантированно создавать объект.
Ты им не поверил.
Для упрямых говорят - сам себе ССЗБ...
Я в детстве тоже не создавал и потом по всему коду был без настроек и на null проверял.
)))
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050239
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я помню Мейеса, исключение, выброшенное конструктором, исключает и вызов деструктора.
Или модерновые плюсы стали настолько продвинутыми, что могут сами разобрать(ся) какие куски деструктора вызывать, а какие нет?
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050252
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Или модерновые плюсы стали настолько продвинутыми, что могут сами разобрать(ся) какие куски деструктора вызывать, а какие нет?

Нет, ничего не изменилось.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050255
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Тебе вроде ответили несколько человек что есть практика гарантированно создавать объект.
Ты им не поверил.
Для упрямых говорят - сам себе ССЗБ...
Я в детстве тоже не создавал и потом по всему коду был без настроек и на null проверял.
)))

Послушай, мой малограмотный дружочек, можно тебя попросить не отвечать на мои посты?
Ну ты реально достал уже своим бессодержательным флудом.
Модератор: Джентльмены. К порядку.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050265
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Покажи, кто понял тут твои метания)))))
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050269
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он спросил. Что предпочтительнее.

Я думаю что оба варианта плохие. Но мне нравится более атомарный вариант класса конфигурации
когда конструктор делает 100% подготовительной работы и не падает.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050272
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
1. Всем нравится когда конструктор не падает. Кроме ТС.
2. Из вопроса надо исключить подвопрос конфигурации. Тогда делай свои первый или второй вариант.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050302
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНасколько я помню Мейеса, исключение, выброшенное конструктором, исключает и вызов
деструктора.
Или модерновые плюсы стали настолько продвинутыми, что могут сами разобрать(ся) какие
куски деструктора вызывать, а какие нет?

Они достаточно продвинутые чтобы вызвать деструкторы только тех вложенных/родительских
объектов, конструкторы которых отработали нормально.

И да, ответ на вопрос топика прост: если надо предотвратить создание объекта -
используется исключение. Надо чтобы объект всегда создавался - не используется исключение.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050477
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Он спросил. Что предпочтительнее.

Я думаю что оба варианта плохие. Но мне нравится более атомарный вариант класса конфигурации
когда конструктор делает 100% подготовительной работы и не падает.

Ваш вариант не слишком приемлем.

1) Грузятся бессмысленные дефолтные настройки.
2) Нужно следить что бы эти дефолтные значения не записались в ini файл.
3) При старте определённого функционала нужно следить не опирается ли он на бессмысленные дефолты? И если да — MsgBox и отказ.

А если это дефолтное значение редактируется через GUI? Вот что выводить на форму?
Бессмысленное дефолтное значение или ошибочное значение которое прочитали из ini?
Зачем мы вообще заменяли на дефолты?

Трудозатратно. С каждым значением возиться нужно.
...
Рейтинг: 0 / 0
25 сообщений из 60, страница 2 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция инициализации или исключение в конструкторе?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]