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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Yur4e
2 / 2 / 0
Регистрация: 20.10.2010
Сообщений: 21
#1

Исключения - C++

20.05.2011, 15:19. Просмотров 636. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2011, 15:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Исключения (C++):

Исключения С++ - C++
С++. Перечитал уже много учебников, видел много примеров, но никак не пойму как пользоваться блоками try catch.. Может хоть кто-нибудь...

Исключения - C++
Помогите реализовать класс исключения в данном коде. Задание: Реализуемая функция должна генерировать подходящие исключения. Обработку...

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

Исключения - C++
Как бросить исключение выхода за границы массива? Как его поймать? Что делать после отбрасывания? TItem &amp; TArray::operator (unsigned...

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

исключения - C++
Есть тестовое задание. Реализовать класс. Есть метод. * @note The function does not validate the index, if the index is out ...

6
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
20.05.2011, 15:55 #2
Это значит, что внутри этой функции могут быть сгенерированы исключения только типа RangeError. Т.е. исключения этого типа впоследствии можно будет обработать используя try-catch. Если внутри этой функции сгенерировать исключения любого друго типа, то будет вызвана функция unexpected
0
OMAAGAAD
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
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
20.05.2011, 16:13 #4
OMAAGAAD, вопрос был о спецификациях исключений, а не об исключениях как таковых.
0
OMAAGAAD
15 / 15 / 3
Регистрация: 24.09.2010
Сообщений: 45
20.05.2011, 16:24 #5
уупс)) ну ничего, может кто искать будет)

извиняюсь тогда)
0
Yur4e
2 / 2 / 0
Регистрация: 20.10.2010
Сообщений: 21
20.05.2011, 16:26  [ТС] #6
Спасибо. Да, интересовали, как я понял позднее, спецификации исключений.
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
20.05.2011, 16:57 #7
Yur4e, к слову, не все компиляторы поддерживают спецификацию исключений, да и вообще, никогда их не видел в живых проектах/библиотеках.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2011, 16:57
Привет! Вот еще темы с ответами:

исключения - C++
скажите пожалуйстокак написать через исключение if(n&lt;=0 || n&gt;=100000000) { fclose(f); f=fopen(&quot;output.txt&quot;, &quot;w&quot;); ...

Исключения - C++
Упражняюсь в программировании. Написал абстрактный класс Shape, от которого наследуются Quadr и Treyg. Создал класс исключения Exeption,...

Исключения - C++
можно ли возвращаться к выполнению кода после обработки исключения, например try{ func1();//обе ф-и могут вызывать исключение...

Исключения - C++
Привет всем. Помогите плиз с задачкой, никак не могу решить, нужно из кода ниже сделать классы производными от logic_error, определенного в...


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

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

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