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

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

Восстановить пароль Регистрация
 
Yur4e
2 / 2 / 0
Регистрация: 20.10.2010
Сообщений: 21
20.05.2011, 15:19     Исключения #1
У Эккеля, во втором томе, в главе про исключения, встретил конструкцию такого вида:
C++
1
2
3
4
T& operator[](int i) throw(RangeError) {
        if(i >= 0 && i < sz) return ptr[i];
        throw RangeError();
    }
Что значит этот throw(RangeError) после списка аргументов? И почему он там?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2011, 15:19     Исключения
Посмотрите здесь:

исключения C++
исключения C++
исключения C++
Исключения C++
C++ Исключения
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
20.05.2011, 15:55     Исключения #2
Это значит, что внутри этой функции могут быть сгенерированы исключения только типа RangeError. Т.е. исключения этого типа впоследствии можно будет обработать используя try-catch. Если внутри этой функции сгенерировать исключения любого друго типа, то будет вызвана функция unexpected
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(...) , тогда в него попадет любое из исключений, лучше бы им не пользоваться, а если используете, то писать его в самом конце.

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

извиняюсь тогда)
Yur4e
2 / 2 / 0
Регистрация: 20.10.2010
Сообщений: 21
20.05.2011, 16:26  [ТС]     Исключения #6
Спасибо. Да, интересовали, как я понял позднее, спецификации исключений.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2011, 16:57     Исключения
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
20.05.2011, 16:57     Исключения #7
Yur4e, к слову, не все компиляторы поддерживают спецификацию исключений, да и вообще, никогда их не видел в живых проектах/библиотеках.
Yandex
Объявления
20.05.2011, 16:57     Исключения
Ответ Создать тему
Опции темы

Текущее время: 21:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru