Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
04-09-2015_19-17-13 / Конспект лекций.doc
Скачиваний:
98
Добавлен:
01.03.2016
Размер:
1.31 Mб
Скачать

16.2 Универсальный обработчик исключений

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

catch(...)

{

...

}

Исключения в языке Си++ могут быть различного типа, в том числе они могут быть объектами классов. Вы можете определить несколько обработчиков исключений различного типа. В этом случае исключение будет обрабатывать обработчик соответствующего типа.

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

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

#include <eh.h>

#include <iostream.h>

#include <process.h>

void FastExit(void);

int main()

{

// Устанавливаем функцию term_func

set_terminate(FastExit);

try

{

// ...

// Вызываем исключение типа int

throw (int) 323;

// ...

}

// Определяем обработчик типа char. Обработчик исключений

// типа int и универсальный обработчик не определены

catch(char)

{

cout << "Exception " << endl;

}

return 0;

}

// Определение функции FastExit

void FastExit()

{

cout << "Exception handler not found" << endl;

exit(-1);

}

Среда Visual C++ позволяет запретить или разрешить обработку исключений языка Си++. Для управления исключениями выберите из меню Build строку Settings. На экране появится диалоговая панель Project Settings, в которой определяются все режимы работы. Выберите страницу C/C++. Затем из списка Category выберите строку C++ Language. Чтобы включить обработку исключительных ситуаций установите переключатель Enable exception handling.

17. Структура Windows-приложения

17.1 Разработка Windows – приложений на языке С++

Операционные системы (ОС) MS-DOS и Windows поддерживают две совершенно разные идеологии программирования. Программа DOS после своего запуска должна быть постоянно активной. Если ей что-то требуется, к примеру, получить очередную порцию данных с устройства ввода-вывода, то она сама должна выполнить соответствующие запросы к операционной системе. При этом программа DOS работает по определенному алгоритму, она всегда знает, что и когда ей следует делать. В Windows все наоборот. Программа пассивна. После запуска она ждет, когда ей уделит внимание операционная система. ОС делает это посылкой специально оформленных групп данных, называемых сообщениями. Сообщения могут быть разного типа, они функционируют в системе достаточно хаотично, и приложение не знает, какого типа сообщение придет следующим. Отсюда следует, что логика построения Windows-приложения должна обеспечивать корректную и предсказуемую работу при поступлении сообщения любого типа. Для обеспечения нормального функционирования своей программы программист должен уметь эффективно использовать функции интерфейса прикладного программирования (Application Program Interface, API) ОС.

Windows поддерживает два типа приложений:

  • оконное приложение – строится на базе специального набора функций API, составляющих графического пользовательского интерфейса (Graphic User Interface, GUI). Оконное приложение представляет собой программу, которая весь вывод на экран производит в графическом режиме. Первым результатом работы оконного приложения является отображение на экране специального объекта – окна. После того, как окно отображено на экране, вся работа приложения направлена на то, чтобы поддержать его в актуальном состоянии;

  • неоконное приложение, также называемое консольным, представляет собой программу, работающую в текстовом режиме. Работа консольного приложения напоминает работу программы MS-DOS, но это лишь внешнее впечатление. Консольное приложение обеспечивается специальными функциями Windows.

Вся разница между двумя типами приложений Windows состоит в том, с каким типом информации они работают. Основной тип приложений Windows – оконные.

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

Минимальное Windows-приложение состоит из трех частей:

  • главной функции;

  • цикла обработки сообщений;

  • оконной функции.

Выполнение любого Windows-приложения начинается с главной функции. Она должна содержать код, осуществляющий настройку (инициализацию) приложения в среде ОС Windows. Видимым для пользователя результатом работы главной функции является появление на экран графического объекта в виде окна. Окно отвечает всем требованиям стандартного окна приложения Windows, т. е. его можно развернуть, свернуть, изменить размер, переместить в другое место экрана и т. д. Последним действием кода главной функции является создание цикла обработки сообщений. После его создания приложение становится пассивным и начинает взаимодействовать с машиной посредством специальным образом оформленных данных – сообщений. Обработка поступающих в функцию сообщений осуществляется специальной функцией – оконной. Оконная функция уникальна тем, что может быть вызвана только из ОС, а не из приложения, которое его содержит.

Соседние файлы в папке 04-09-2015_19-17-13