Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 31.05.2016
Сообщений: 13
1

Способ сообщить об ошибке функции, возвращающей структуру

04.11.2017, 21:31. Показов 696. Ответов 6
Метки нет (Все метки)

Есть самописный контейнер, содержащий структуры определенного типа. Один из методов этого контейнера возвращает элемент контейнера (в качестве примера, пусть он возвращает всегда "первый" элемент контейнера), но когда контейнер пустой, по смыслу метода возвращать нечего.

Правильно ли в таком случае в методе прописать выбрасывание исключения? Или стандартная практика другая?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2017, 21:31
Ответы с готовыми решениями:

Как заставить сообщить об ошибке?
Есть в Access сохраненная процедура такого типа: UPDATE Slov SET Slov.Eng = @Eng, Slov.T_Eng =...

Создание функции, возвращающей 2 значения
Создаю функцию в Oracle, которая возвращает 2 значения. (числовое и текстовое) CREATE OR...

Выход из функции, возвращающей значение
Всем привет! Если функция не возвращает значение выхожу с помощью return, а как быть если надо...

Объявление функции возвращающей указатель
Как объявить функцию, которая возвращает указатель?

6
7046 / 6065 / 2756
Регистрация: 14.04.2014
Сообщений: 25,992
04.11.2017, 23:37 2
По-разному бывает. Где-то исключения, где-то есть специальное "пустое" состояние структуры, где-то флаг используется.
0
nd2
3419 / 2799 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
04.11.2017, 23:46 3
Цитата Сообщение от Solevar Посмотреть сообщение
Или стандартная практика другая?
Посмотри стандартные контейнеры, это и будет стандартная практика.
0
22 / 19 / 9
Регистрация: 22.09.2015
Сообщений: 161
05.11.2017, 13:25 4
Так же можно в контейнере завести переменную ошибки. И функцию, которая отвечает на вопрос: Была ли в последнем вызове ошибка?
0
Эксперт С++
8556 / 4132 / 908
Регистрация: 15.11.2014
Сообщений: 9,329
05.11.2017, 13:34 5
Цитата Сообщение от Solevar Посмотреть сообщение
Правильно ли в таком случае в методе прописать выбрасывание исключения?
нет.

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

Цитата Сообщение от Solevar Посмотреть сообщение
Или стандартная практика другая?
стандартная практика - делать защиту от дурака для отладочной версии
(см assert)

в релизе поведение неопределенно.
0
0 / 0 / 0
Регистрация: 31.05.2016
Сообщений: 13
05.11.2017, 16:36  [ТС] 6
Цитата Сообщение от hoggy Посмотреть сообщение
в корректно спроектированной программе не должно быть попыток взять то,
чего не существует.
Таким образом, если есть написанный класс-контейнер, и клиентский код захочет извлечь оттуда элемент, то это уже его задача - перед каждой попыткой проверять (может быть, с помощью предоставленных в интерфейсе класса size-функций), не пуст ли контейнер?
0
Эксперт С++
8556 / 4132 / 908
Регистрация: 15.11.2014
Сообщений: 9,329
05.11.2017, 17:04 7
Цитата Сообщение от Solevar Посмотреть сообщение
Таким образом, если есть написанный класс-контейнер, и клиентский код захочет извлечь оттуда элемент, то это уже его задача - перед каждой попыткой проверять (может быть, с помощью предоставленных в интерфейсе класса size-функций), не пуст ли контейнер?
да.
такова стандартная практика.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2017, 17:04

Синтаксис объявления функции, возвращающей экземпляр класса
В общем, появилась необходимость создать функцию, возвращающую экземпляр класса TStrings. В чем...

Создание пользователской функции, возвращающей массив в excel
Аргумент функции - квадратный диапазон значений. Зеркально отразить ее элементы относительно...

Ошибка в пользовательской функции, возвращающей TextBox1.Text
Вот такое вылезает, не могу понять, что за ошибка и как с ней бороться

Шаблон функции, возвращающей количество отрицательных элементов массива
Здравствуйте! Дано следующее задание: ""Использование функций и шаблонов функций" Напишите...

Написать тело функции, возвращающей нормальный вектор прямой на плоскости
написать тело функции, возвращающей нормальный вектор прямой на плоскости. Пожалуйста.Это экзамен

Как получить адрес функции, возвращающей указатель на массив, из DLL?
В моем dll есть функция возвращающая указатель на массив указателей extern "C"...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.