Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/2: Рейтинг темы: голосов - 2, средняя оценка - 5.00
ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,031
Завершенные тесты: 1
1

Обработка исключений в классах для пользовательских типов

19.03.2013, 11:11. Просмотров 472. Ответов 1
Метки нет (Все метки)

Здорова господа!
Запустил токо класс String тестю и тут у меня вылетело исключение выход за пределы индекса,
и программа тупо аварийно остановилась
В классе String, Range это вложенный класс для исключения выход за пределы индекса.
я попробовал обработать это исключение и записал код:
C++
1
2
3
4
5
6
7
8
9
10
11
int main()
try
{
  //...
  vuletaet icklyuchenie Range
  //...
}
catch(String::Range& a)
{
  cout <<"Crabotalo Range"<<endl;
}
Вроде все сработало при выходе за пределы индекса catch(String::Range& a) ловит исключение и выводит строку.

Интересно правильно ли я понимаю, что бы создать другие исключения в классе, то просто добавляем другой новый вложенный класс?
Тада выходит, что один пользовательский класс, для одного исключения, второй для другого.

По примеру из книги class Range пустой ничо в нем нету, определяется просто, я так понял для вылета, как метка, чтобы можно было понять какого типа произошла ошибка хз. так это или его нужно как, то еще и заполнить? Ну можно конечно инициализировать объект как то но, что это нам даст?

Ну и вообще правильно ли так обрабатывать исключения , новый класс - новое исключение?

п.с. Да скорее всего правильно ведь это ж сам гуру Страуструп код писал
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2013, 11:11
Ответы с готовыми решениями:

Шаблон для пользовательских типов данных
В общем имееются две функции. Одна принимает тип данных string другая char. Функции выполняют одну...

Возможно ли переопределение операторов для пользовательских типов?
Собственно преследуемая цель: Определить свой тип int - myint. Переопределить для него операторы...

Как работать с массивами в пользовательских классах?
есть программа для записи в класс Auto, но она ругается если я хочу записать в массив следующим...

Один блок catch для двух типов исключений порожденных от одного класса
Товагищи!! Имеется задача с книги С. Прата с++11. Не могу реализовать следующее : Вот к чему...

Обработка исключений для new
Всем привет! Вопрос следующий. Когда функция new не может выделить память, то генериться...

1
Jupiter
Каратель
Эксперт С++
6579 / 4000 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
19.03.2013, 11:27 2
Цитата Сообщение от ninja2 Посмотреть сообщение
Интересно правильно ли я понимаю, что бы создать другие исключения в классе, то просто добавляем другой новый вложенный класс?
да, но необязательно вложенный
Цитата Сообщение от ninja2 Посмотреть сообщение
По примеру из книги class Range пустой ничо в нем нету, определяется просто, я так понял для вылета, как метка, чтобы можно было понять какого типа произошла ошибка хз. так это или его нужно как, то еще и заполнить?
можно и заполнить, это дело добровольное, классы исключений ничем не отличаются от обычных классов

Цитата Сообщение от ninja2 Посмотреть сообщение
Ну можно конечно инициализировать объект как то но, что это нам даст?
исключения служат для передачи информации об ошибке с места её возникновения в место её обработки
1
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2013, 11:27

Обработка исключений с пмощью структурированной обработки исключений
Есть функция, которая определенным образом работает с файлами,но при работе с файлами &quot;не...

Как правильно использовать деструктор исключений в наследующих классах?
Ни разу не видел использования деструктора класса std::exception в наследующем классе. Будет ли...

Преобразование пользовательских типов
Добрый день. Суть проблемы такова. Есть 2 класса. Преобразовать через оператор получается. А через...


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

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

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