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

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

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

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

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

У Эккеля, во втором томе, в главе про исключения, встретил конструкцию такого вида:
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++
Никак не могу понять, как работают исключения в С++. Может быть кто-нибудь сможет объяснить на примере деления на 0. Исключения должны быть...

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

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

Исключения - C++
Ребят, тут такая тема. В общем нужно при вводе данных смотреть на исключения, т.е. если ввели в int буквы - пробросить исключение. С этим я...

Исключения - C++
По каким причинам объявление исключения в catch-обработчике следует делать ссылкой? Что-то не пойму, почему по-обычному нельзя?

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
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
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
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++
программа реализует проверку на двоичное число: #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; //класс исключений ...

Исключения - C++
Помогите пожалуйста с программой, ибо чё-то не даётся мне этот try... catch . Собственно задача: Вычислите 1/х как число с плавающей...

Шаблоны и исключения - C++
Возможно ли задать аргумент catch по типу шаблона, чтобы одним блоком catch перехватывать исключения всех специализаций шаблона (int,...


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

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

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