Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

В исключительные ситуации




Введение

ЗАМЕЧАНИЕ

Исключительные ситуации

Исключительные ситуации — новые "любимчики" ANSI C++, но до тех пор, пока вы не научитесь ими пользоваться, они могут показаться вам скорее дьявольскими, чем любимыми. Немногие программисты на C++ пользуются исключительными ситуациями в коммерческих программах — они слишком новы, и немногие компиляторы их поддерживают. Конечно, в некоторых библиотеках классов, таких как Borland's Object Windows (OWL), исключительные ситуации используются весьма интенсивно, так что важно понимать, как они работают.

Это введение в исключительные ситуации — переработанная глава 2 моей книги Mastering Windows Programming with Borland C++ 4.

Исключительные ситуации пришли со своей собственной терминологией и концепциями. Следующие не­сколько замечаний призваны помочь вам прочесть и понять этот раздел.

Исключительная ситуация — это не что иное, как условие исключительной ситуации, требующее специальной обработки. Исключительные ситуации лучше всего использовать для обработки ошибок, возникающих при выполнении,(однако их применение этим не ограничивается).

• Для возбуждения исключительной ситуации оператор посылает ( throw ) объект, описывающий суть исключительной ситуации. Объект может быть литеральным значением, строкой, объектом класса или любым другим объектом. (Объект исключительной ситуации не обязательно должен быть объектом класса.)

• Для обработки исключительной ситуации некоторый оператор перехватывает (catch) условие, посланное некоторым другим процессом. Операторы, перехватывающие исключительные ситуации, называются обработчиками исключительных ситуаций.

• Программы подготавливаются к перехвату исключительных ситуаций, испытывая (try) один или несколько процессов, возбуждающих исключительные ситуации. В общем, для использования исключительных ситуаций вы испытываете один или несколько операторов и перехватываете любую исключительную ситуацию, которая возбуждается этими операторами.

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

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

• Функция запрашивает решения проблемы обработчиком исключительной ситуации. Обработчик, если он существует, вызывается автоматически в ответ на посылку объекта исключительной ситуации.

В программе возбуждается исключительная ситуация с помощью выполнения оператора throw, обычно где-нибудь внутри функции:

throw 1;

Однако целые числа — малоинформативны.

Более подходящий объект для посылки — строка:

throw "overflow";

 

Где-нибудь в другом месте программы обработчик строковых исключительных ситуаций может поймать и отобразить на дисплее посланный объект.

//В обработчике задается тип объекта (в //этом примере — const char*) в //выражении catch:

catch (const char* message) {

cout «"Error! -- " «message «endl;

//... Другие действия в ответ на

//исключительную ситуацию

. }

Оператор catch ловит посланные объекты строковых исключительных ситуаций и отображает их оператором вывода в поток.

Что произойдет дальше — зависит от программиста. Если не определить дальнейшие действия, программа продолжит свою работу после catch.

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

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




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 526; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.