Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
_mayor
1 / 1 / 0
Регистрация: 29.08.2009
Сообщений: 63
#1

Исключения, возвращающие данные из фукнции - C++

12.09.2009, 08:34. Просмотров 608. Ответов 6
Метки нет (Все метки)

[c++] исключенеия возвращающие данные из фукнции

допустим есть контейнер exc_vector, который бросает исключения при обращении к несуществующему элементу:

как может различаться по производительности код:
C++
1
2
3
4
5
6
7
int d=v.size();
for(int i=0;i<d;i++) sum+=v[i];
// и
try{
 while(1) sum+=v[i++];
}
catch(range ) { }
почему обычно не используется 2й вариант кода?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2009, 08:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Исключения, возвращающие данные из фукнции (C++):

Полиморфизм и виртуальные фукнции - C++ Builder
Здравствуйте.При написание программы у меня возникла одна неприятность. Вот какая картина. У меня существует 4 класса,первый-родитель,а...

Создание фукнции с элементами формы - C++ Builder
Ребят, мне надо создать булевскую функцию, внутри которой будет проверяться заполнение Edit'ов:bool iseditfull() { if...

Фукнции для работы со строками [AnsiString] - C++ Builder
Всем привет. :) В Java Script'e есть такая функция - split();, которая разбивает текст на количество отдельных строк по заданному...

Написать подпрограммы, возвращающие новый список L, включающий в себя предыдущие - C++ Builder
Помогите пожалуйста сделать задачу. Даны два списка L1 и L2 пар вещественных чисел. Написать подпрограммы, возвращающие новый список...

Виртуальные фукнции - C++
Здравствуйте, уважаемые форумчане! Не получается реализовать следующее: Есть базовый класс Array с полями: массив типа unsigned char и...

Возврат указателя на строку из фукнции - C++
Снова я пришел к вам со строками. Читаю &quot;Как программировать на С++&quot; и там везде пишут про инкапсуляцию, сокрытие данных. Так чтоб мы...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
12.09.2009, 09:04 #2
Цитата Сообщение от _mayor Посмотреть сообщение
почему обычно не используется 2й вариант кода?
кто это тебе сказал? где не используется, в книгах? в учебных примерах?
***
если исключение не будет перехвачено - программа завершится.
_mayor
1 / 1 / 0
Регистрация: 29.08.2009
Сообщений: 63
12.09.2009, 10:58  [ТС] #3
Цитата Сообщение от zim22 Посмотреть сообщение
кто это тебе сказал? где не используется, в книгах? в учебных примерах?
***
если исключение не будет перехвачено - программа завершится.
ну покажи пример реального боевого кода, где такое используется
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
12.09.2009, 12:32 #4
где используется что? обработка исключений?
http://koders.com/default.aspx?s=cat...&la=Cpp&li=%2A
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
12.09.2009, 15:08 #5
_mayor,
Цитата Сообщение от Агуров. C# Сборник рецептов
12.4 Не используйте исключения, если это возможно
Генерация исключения является чрезвычайно длительной операцией. Не следует применять исключения, если без них можно обойтись. Например, код
C#
1
2
3
4
5
6
7
8
try
{
    return b/c;
}
catch (DivideByZeroException)
{
    return 0;
}
вполне можно переписать без использования исключений:
C#
1
2
3
if (c==0)
    return 0;
return b/c;
Для С++ это тоже остается истинно. Делай выводы сам, я ничего не утверждаю, но я лично исключениями редко пользуюсь
_mayor
1 / 1 / 0
Регистрация: 29.08.2009
Сообщений: 63
13.09.2009, 18:58  [ТС] #6
zim22, обработка исключений, в условиях когда хватает локальных данных для for\if

Добавлено через 1 минуту
Цитата Сообщение от M128K145 Посмотреть сообщение
_mayor,
Для С++ это тоже остается истинно. Делай выводы сам, я ничего не утверждаю, но я лично исключениями редко пользуюсь
а если альтернатива:
миллион проверок переменной в цикле
или проброс 1го исключения?
Evg
Эксперт CАвтор FAQ
17621 / 5845 / 375
Регистрация: 30.03.2009
Сообщений: 16,118
Записей в блоге: 26
13.09.2009, 19:22 #7
Цитата Сообщение от _mayor Посмотреть сообщение
а если альтернатива:
миллион проверок переменной в цикле
или проброс 1го исключения?
Прежде, чем бросить исключение, делается проверка, а нужно ли его делать - а это как минимум то же самое сравнение, которого ты пытаешься избежать (выполняется внутри перегруженного оператора [] для твоего класса exc_vector). К тому же реализация проброса исключения в теории может занять дополнительный миллион тактов, которые ты хотел сэкономить (но на самом деле не сэкономил)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2009, 19:22
Привет! Вот еще темы с ответами:

Константные функции-члены класса, возвращающие ссылку на константу - C++
Упражняюсь по книге Липпмана, выполняю задания по теме классы. Необходимо реализовать класс person, который способен хранить имя и адрес...

Массив указателей на функции, возвращающие значения разного типа - C++
Подскажите,возможно ли создать массив указателей на функции, которые возвращали бы значения разного типа? Приблизительно хотелось бы...

Как в данной ситуации использовать функции, получающие и возвращающие различное количество аргументов? - C++
Дана действительная матрица размера MхN. Упорядочить строки матрицы по невозрастанию значений наименьших элементов строк методом Шелла...

Дважды вычислить значение выражения, используя функции возвращающие void и не void - C++
Хай!Помогите решить Дважды вычислить значение выражения, используя функции возвращающие void и не void....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.09.2009, 19:22
Ответ Создать тему
Опции темы

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