Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Лафоре Р. -> "Объектно-ориентированное программирование в С++" -> 255

Объектно-ориентированное программирование в С++ - Лафоре Р.

Лафоре Р. Объектно-ориентированное программирование в С++ — М.: Питер, 2004. — 992 c.
Скачать (прямая ссылка): obektnoorentprogramm2004.djvu
Предыдущая << 1 .. 249 250 251 252 253 254 < 255 > 256 257 258 259 260 261 .. 341 >> Следующая

После успешной ловли исключений вам, как истинному охотнику, вероятно, захочется прикончить всю программу, чтобы никаких исключений больше тут не водилось вообще. Механизм исключений позволяет выявить виновника произошедшей ошибки, представить его имя пользователю, а перед завершением программой произвести все необходимые ритуалы очистки памяти, завершения стартовавших процессов и т. п. Лучшее средство для очистки совести компьютера перед закрытием приложения — это деструктор. Как раз с его помощью можно вывести даже самые невыводимые пятна в памяти компьютера, во всяком случае, той ее части, которая использовалась объектами.

В других ситуациях у вас может не появиться намерения завершить программу. Может быть, ошибку можно исправить «на лету» или попросить пользователя ввести данные корректно и исчерпать тем самым инцидент. В таком случае, блоки повторных попыток и блоки-ловушки замыкаются в цикл так, чтобы после работы обработчика исключений управление в программе вернулось бы к началу блока повторных попыток.

Если не нашлось обработчика для сгенерировавшегося исключения, операционная система бесцеремонно закрывает программу.

Резюме

Шаблоны позволяют создавать семейства функций или семейства классов, выполняющих одни и те же операции с разными типами данных. Если вы вдруг ловите себя на том, что пишете функции, которые делают одно и то же, но с разными типами данных, значит, пришла пора написать шаблон функции. Если вы 676

Глава 14. Шаблоны и исключения

ловите себя на том, что пишете уже в который раз спецификацию класса, который делает то же, что и предыдущие, но с другими типами, следует подумать о написании шаблона класса. Этим вы сохраните свое драгоценное время, а в результате получится ясный, понятный и компактный код, причем алгоритмы можно будет менять очень легко и сразу для работы со всеми используемыми типами данных.

Исключения — это механизм обработки ошибок, возникающих при некорректной работе программ, написанных на С++, с использованием систематического, объектно-ориентированного подхода. Исключительные ситуации обычно возникают вследствие ошибочных выражений в блоках повторных попыток (try-блоках), которые работают с объектами некоторого класса. Метод класса обнаруживает ошибку и «генерируют исключение», которое ловится программой с помощью класса, следующего в коде обработчика исключений сразу за блоком повторных попыток.

Вопросы

Ответы на эти вопросы можно найти в приложении Ж.

1. Шаблоны позволяют удобным способом создавать семейства:

а) переменных;

б) функций;

в) классов;

г) программ.

2. Шаблонный аргумент всегда начинается с ключевого слова_.

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

4. Напишите шаблон функции, всегда возвращающей свой аргумент, умноженный на два.

5. Шаблонный класс:

а) создается для того, чтобы храниться в разных контейнерах;

б) работает с разными типами данных;

в) генерирует идентичные объекты;

г) генерирует классы с различным числом методов.

6. Истинно ли утверждение о том, что шаблон может иметь несколько аргументов?

7. Создание реальной функции из шаблона называется_

функции.

8. Реальный код шаблонной функции генерируется при:

а) объявлении функции в исходном коде;

б) определении функции в исходном коде; Вопросы 6??

в) вызове функции в исходном коде;

г) запуске функции во время работы программы.

9. Ключевой для шаблонов является концепция, согласно которой_

заменяется на имя, которое подставляется вместо_.

10. Шаблоны часто используются с классами, которые__.

11. Исключение в большинстве случаев возникает из-за:

а) программиста, написавшего исходный код приложения;

б) создателя класса, написавшего его методы;

в) ошибки выполнения;

г) сбоя в операционной системе.

12. При работе с механизмом исключений в С++ используются следующие ключевые слова:_,_,_.

13. Напишите выражение, генерирующее исключение, используя класс Bounds-Error (тело класса пусто).

14. Истинно ли утверждение о том, что выражения, котрые могут создать исключительную ситуацию, должны быть частью блока-ловушки?

15. Исключения передаются:

а) из блока-ловушки в блок повторных попыток;

б) из выражения, создавшего исключительную ситуацию, в блок повторных попыток;

в) из точки, где возникла ошибка, в блок-ловушку;

г) из выражения, в котором возникла ошибка, в блок-ловушку.

16. Напишите спецификацию класса исключений, хранящего номер ошибки и ее название. Включите в класс конструктор.

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

18. Для следующих ошибок обычно генерируется исключение:

а) чрезмерное количество данных грозит переполнить массив;

б) пользователь нажал CtrU-C для закрытия программы;

в) скачок напряжения в сети привел к перезагрузке системы;

г) new не может зарезервировать необходимый объем памяти.
Предыдущая << 1 .. 249 250 251 252 253 254 < 255 > 256 257 258 259 260 261 .. 341 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100