2 / 2 / 0
Регистрация: 20.10.2010
Сообщений: 21
1

Исключения

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

Author24 — интернет-сервис помощи студентам
У Эккеля, во втором томе, в главе про исключения, встретил конструкцию такого вида:
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
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
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
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
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
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
20.05.2011, 16:57 7
Yur4e, к слову, не все компиляторы поддерживают спецификацию исключений, да и вообще, никогда их не видел в живых проектах/библиотеках.
0
20.05.2011, 16:57
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
Copyright ©2000 - 2024, CyberForum.ru