Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CPP_NOW.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
121.86 Кб
Скачать

Обработка исключительных ситуаций

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

Простейшим примером является использование в программе функции printf. Известно, что в качестве возвращаемого значения эта функция передает количество выведенных символов. Это количество может быть равно нулю, например, в том случае, когда стандартный вывод переопределен на файл и на диске (что легко может случиться с дискетой) отсутствует свободное место. Но, как правило, никто и никогда не проверяет результат работы функции printf из-за достаточно большого размера непроизводительных затрат, которые возникли бы в таком случае. Другим примером могут служить конструкторы, эти функции вызываются неявно и не могут возвращать код ошибок обычным путем в случае их возникновения. Для обработки такого рода ошибок и предназначены исключительные ситуации в C++. Пример того, как мог бы выглядеть класс List, содержащий обработку исключительных ситуаций, приведен ниже:

template<class T> class List { T *v; int size; public: List(int) { if( n>0 ) v = new T[size=n]; throw "err ind"; } class out_of_bounds {}; T& operator[](int i) { if ( 0<=i && i<size ) return v[i]; throw out_of_bounds(); } virtual ~List( void ) { delete v;} };

void main( void ) { try { List<int> x(10); x[22]=3; } catch(out_of_bounds) { cerr << " Index is out of range\n"; } catch (char*) { cerr << "Error in size of array\n"; } }

Здесь ключевые слова throw служат для возбуждения исключительных ситуаций и задания их типа, try - для выделения блока контроля, а catch - для описания реакции на ситуацию определенного типа. Реакция будет вызвана только тогда, когда возбуждение исключительной ситуации производится в блоке контроля или в функциях, вызванных из этого блока. Недостатком механизма обработки исключительных ситуаций является то, что управление из программы передается сразу на обработку ошибок, поэтому далеко не всегда понятно, в каком именно месте программы возникла эта исключительная ситуация.

Содержание

Прямые расширения 5

Описания и константы 5

Время жизни 8

Идентификаторы 9

Типы 9

Встраевыемые функции (Inline-подстановки) 14

Прототипы функций 16

Перегружаемые функции 19

Ссылки 21

Использование динамической памяти 23

Потоки 24

Абстракция данных 25

Структуры 25

Классы 29

Конструкторы и деструкторы 30

Указатель this 33

Определение статических членов класса 35

Статические функции члены класса 36

Константные функции члены класса 37

Указатели на функции 38

Вложенные классы 39

Преобразование типов 40

Дружественные функции 43

Переопределение операторов 46

Производные классы 52

Абстрактные классы 60

Множественное наследование 61

Организация ввода-вывода 65

Работа с файлами 67

Шаблоны 68

Обработка исключительных ситуаций 70

Методические указания по курсу: Вычислительная техника и программирование

Введение в объектно-ориентированное программирование на языке С++

Составитель Коротин Павел Николаевич

Редактор Г.И.Карпова

Подписано в печать 25.11.97 Формат 60х90 1/16. Бумага газетная. Печать офсетная. Усл. печ. л. 3,1. Уч.-изд. л. 3,1. Тираж 150 экз. Заказ № .

Московский физико-технический институт Лаборатория обработки учебной и научной информации 141700, Московская область, г. Долгопрудный, Институтский пер., 9

73

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]