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

Исключения

20.05.2011, 15:19. Просмотров 871. Ответов 6
Метки нет (Все метки)

У Эккеля, во втором томе, в главе про исключения, встретил конструкцию такого вида:
C++
1
2
3
4
T& operator[](int i) throw(RangeError) {
        if(i >= 0 && i < sz) return ptr[i];
        throw RangeError();
    }
Что значит этот throw(RangeError) после списка аргументов? И почему он там?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2011, 15:19
Ответы с готовыми решениями:

Исключения
Никак не могу понять, как работают исключения в С++. Может быть кто-нибудь сможет объяснить на...

исключения c++
Здраствуйте! Я тут приспособил код старого проекта чтобы побаловаться с исключениями. Перечитывал я...

Исключения
Здравствуйте, у меня есть немножко глупый вопрос: есть скажем функция a() { some code } Все...

Исключения
Проверить входной файл на то, правильно ли в нём использованы многострочные комментарии/* */. Я не...

6
1992 / 1592 / 488
Регистрация: 31.05.2009
Сообщений: 2,980
20.05.2011, 15:55 2
Это значит, что внутри этой функции могут быть сгенерированы исключения только типа RangeError. Т.е. исключения этого типа впоследствии можно будет обработать используя try-catch. Если внутри этой функции сгенерировать исключения любого друго типа, то будет вызвана функция unexpected
0
15 / 15 / 3
Регистрация: 24.09.2010
Сообщений: 45
20.05.2011, 16:06 3
По сути такое исключение требует, как уже сказали выше try-catch в основном коде программы.
Если не ошибаюсь, то throw RangeError(); "выкидывает" объект класса, созданного предварительно.
вместо RangeError() может быть что угодно(объект класса, любое числовое значение).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream> 
using namespace std;
 
int main ()
{
    try
    {
       //код, который программа будет выполнять
    }
    catch (int) //в скобках указываете тот тип данных, который необходимо отловить, после того, как его "выкинет" throw, в случае ошибки
    {
       //действия, необходимые выполнить в случае данного исключения
    }
    return 0;
Блоков catch может быть неограниченное кол-во. Так же можно написать catch(...) , тогда в него попадет любое из исключений, лучше бы им не пользоваться, а если используете, то писать его в самом конце.

Надеюсь,что помог)
0
1992 / 1592 / 488
Регистрация: 31.05.2009
Сообщений: 2,980
20.05.2011, 16:13 4
OMAAGAAD, вопрос был о спецификациях исключений, а не об исключениях как таковых.
0
15 / 15 / 3
Регистрация: 24.09.2010
Сообщений: 45
20.05.2011, 16:24 5
уупс)) ну ничего, может кто искать будет)

извиняюсь тогда)
0
2 / 2 / 0
Регистрация: 20.10.2010
Сообщений: 21
20.05.2011, 16:26  [ТС] 6
Спасибо. Да, интересовали, как я понял позднее, спецификации исключений.
0
Эксперт С++
2328 / 1701 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
20.05.2011, 16:57 7
Yur4e, к слову, не все компиляторы поддерживают спецификацию исключений, да и вообще, никогда их не видел в живых проектах/библиотеках.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2011, 16:57

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

Исключения
Надо сделать исключение в программе. У меня есть список. Есть методы добавить в конец списка, в...

исключения
пожалуйста, gомогите решить задачу на с++ , кoтoрая пoкaзывaет, чтo функция co cвoим блoкoм try...

исключения
Помогите пожалуйста создать мнoгoурoвнeвую иeрaрхию нaслeдoвaния клaссoв исключeния для сoздaния...

Исключения в С++
Есть 3 массива arrA, arrB, arrC. В массиве А хранятся числа типа float, в массиве В хранятся числа...


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

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

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