хотел поинтересоваться, считается ли плохим тоном бросать исключение в конструкторе? Я знаю, что объект не будет полностью создан, и из-за этого возможны утечки. Но в моем случае, я использую умные указатели и мне нужно при создании объекта системы проверить его получаемые данные в конструкторе, если что-то не правильно то бросить исключение и уже там сделать exit(), либо может делать exit прямо в конструкторе? Хотелось бы получить подробный ответ на эту тему. За ранее спасибо...
считается ли плохим тоном бросать исключение в конструкторе?
Нет, не считается. Исключения в том числе для того и предназначены, чтобы предоставить механизм аварийного выхода из тех контекстов, в которых других более-менее элегантных механизмов обработки исключительных ситуаций предложить не получается. Конструкторы как раз относятся к этой категории (операторы - другой пример). Разумеется, бросать исключения надо уметь правильно, чтобы не было никаких утечек.
Однако принятие решения о том, выбросить ли из конструктора исключение или все таки завершить конструирование объекта в некоем "подвешенном" состоянии - вопрос творческий и неоднозначный.
если что-то не правильно то бросить исключение и уже там сделать exit(), либо может делать exit прямо в конструкторе
У вас какая-то безусловная завязанность на exit
наблюдается. Бросание и обработка исключений совсем не предполагает обязательного завершения программы. Исключение можно поймать, обработать, восстановиться после него и продолжить нормальную работу.
Но если в вашем случае возникновение исключительной ситуации обязательно приводит к завершению работы всей программы, то зашивать безусловное убивание всей программы в конструктор какого-то объекта - в большинстве случаев дурной тон. Лучше все таки просто выбросить исключение, а решение о завершении принять на более высоком уровне.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как мне преобразовать числа string в double через atof сразу в массив?
Знаю, что если есть абстрактный клас(например: Account) и наследники абстрактного класа(PrivelegeAccount, SavingAccount), то можно через указатель на родительский...
Выскакивает вот такая ошибка, когда нажимаю Отладка -> Запустить без отладки Как решить эту проблему?
Что я делаю не так ? Программа грубо говорят пишет в компорт пакет и читает ответПример кода: