69720

Неспіймані виключення

Лекция

Информатика, кибернетика и программирование

Не дивлячись на найвідчайдушніші спроби обробити виключення, бувають випадки, коли необхідно припинити виконання програми. Відновлення після таких виключень (а також фатальних) неможливе. C++ дозволяє використовувати функції terminate...

Украинкский

2014-10-09

26.5 KB

0 чел.

Тема 10: Неспіймані виключення

Не дивлячись на найвідчайдушніші спроби обробити виключення, бувають випадки, коли необхідно припинити виконання програми. Відновлення після таких виключень (а також фатальних) неможливе. C++ дозволяє використовувати функції terminate і set_terminate. Ці функції оголошені в заголовному файлі Ехсерт.Н. Функція terminate завершує виконання програми за умовчанням. Ви можете визначити вашу власну функцію завершення, викликавши функцію set_terminate і передавши їй адресу вашої функції.

Розглянемо приклад програмування, який ілюструє, як і коли використовувати функцію set_terminate, щоб закінчити програму. У лістингу 16.6 показаний початковий текст програми Error6.CPP, яка ілюструє неспіймані виключення. Програма оголошує функції badnew, solver і main. У прототипі функції solver перераховані виключення, що генеруються цією функцією. Проте ця функція врешті-решт генерує виключення, що термінує, коли вона викликає функцію badnews. Програма реагує на це виключення, закінчуючи виконання.

Представимо виведення програми в лістингу 16.6.

Terminating program. That's al I folks!

Лістинг 16.6

Початковий текст програми Error6.CPP

// Програма ілюструє

// обробку неспійманих виключень

«include <iostream.h> «include <except.h> «include <stdl ib,h>

// оголосити скелетні класи виключень class mainerror {; class secerror {; class Kaboom {;

void badnews() <

throw Kaboom(); }

void solver(int ncode) throw(mainerror, secerror) { if (ncode > 0) throw mainerror(); else if (ncode < 0) throw secerror(); badnews(); }

void myterminateo {

cout << "Terminating program. That's al I folks!\n";

exit(1); >

main() {

setjterm i nate(myterm i nate);

// генеруємо виключення

try {

solver(O);

catch (mainerror)

cout « "HANDI ing main exception\n"; catch (secerror)

cout « "Handiing secondary exception\n";

}

return 0;

}

Лістинг 16.6 багато в чому подібний до лістингу 16.5. Новий лістинг створений шляхом заміни функцій set_unexpected і myunexpected функціями set_terminate і myterminate і повідомлення, що видається останньою функцією. Не дивлячись на те, що програми в лістингах 16.5 і 16.6 подібні, вони виконують абсолютно різні дії. Лістинг 16.5 обробляє несподівані виключення, а лістинг 16.6 формально відмовляється від відновлення виконання програми і завершує її.


 

А также другие работы, которые могут Вас заинтересовать

50446. Статистические модели сигналов в линейных системах 5.07 MB
  Пусть стационарный случайный процесс заданный своим математическим ожиданием 1 и ковариационной функцией 2 поступает на вход стационарной линейной системы с весовой функцией . Ковариационная функция сигнала на выходе системы описывается выражением ....
50447. Изучение распределения Гаусса и двумерного распределения Максвелла на механической модели 72.5 KB
  Тема: Изучение распределения Гаусса и двумерного распределения Максвелла на механической модели. Для подобного рода вычислений необходимо знать закон или функцию распределения. Закон нормального распределения имеет вид 1.На рисунке 1 показан график распределения Гаусса; на нём представлены две кривые с разными мерами точности причём h1 h2.
50448. Определение коэффициента внутреннего трения жидкостей капилярным вискозиметром 55 KB
  Если по трубке течёт установившийся поток жидкости или газа то отдельные части потока движутся вдоль плавных линий тока форма которых определяется стенками трубки.При уве личении скорости потока даже в прямой трубке линии тока начинают закручиваться в виде вих рей или водоворотов и начинается энергичное перемешивание жидкости. Было установленно что характер течения жидкости зависит от значения безразмерной величи ны Reкоторая называется числом Рейнольда 1.В данной работе он определяется...
50449. ДАТЧИК ДАВЛЕHИЯ МТ100 1.08 MB
  УСТРОЙСТВО И РАБОТА ДАТЧИКОВ ПОДГОТОВКА К РАБОТЕ И ЭКСПЛУАТАЦИЯ ДАТЧИКОВ СХЕМА СОСТАВЛЕHИЯ УСЛОВHОГО ОБОЗHАЧЕHИЯ ДАТЧИКОВ ОБОЗHАЧЕHИЕ ИСПОЛHЕHИЙ ДАТЧИКОВ ПО МАТЕРИАЛАМКОHТАКТИРУЮЩИМ С ИЗМЕРЯЕМОЙ СРЕДОЙ
50450. Программирование на языке высокого уровня. Методические указания 105.5 KB
  Операторы языка Си управляют процессом выполнения программы. Набор операторов языка Си содержит все управляющие конструкции структурного программирования. В теле некоторых составных операторов языка Си могут содержаться другие операторы. Составной оператор ограничивается фигурными скобками все другие операторы заканчиваются точкой с запятой.
50451. Базовые инструменты программы Adobe Photoshop 159.5 KB
  Выбор цвета и заливка В блоке инструментов найдите инструмент Foreground color Bckground color Выберите основной цвет Выберите фоновый цвет; он выглядит так: При щелчке по верхнему квадрату раскрывается окно выбора цвета рисующих инструментов: кистей заливок фигур и др. Окна однотипны цвета в них можно выбрать несколькими способами. 2 Нажав кнопку Custom Библиотеки цветов выбрав одну из Библиотек Book а в ней – нужный образец цвета.
50452. Создание коллажа из текста и графики, удаление муара 1.08 MB
  В настоящей работе идейной проработки не требуется задача стоит проще: студентам предлагается создать коллаж объединив графические файлы из имеющегося набора и сделав текстовые вставки различного шрифтового начертания. Создайте холст для коллажа в окне File Файл → New Новый установив здесь необходимые параметры. Затем в соответствии с указаниями преподавателя откройте папку Коллаж не в Windows а в Photoshop в списке Тип файлов: поставьте JPEG в окне Вид – Эскизы страниц. Откройте файл отсюда надо перенести мяч в наш коллаж.
50453. Дополнительные возможности Adobe Photoshop 109.5 KB
  В этой работе описаны такие опции как создание Gifанимации и работа с векторными контурами. Создание Gifанимации Gifанимация – самый простой и исторически первый способ компьютерной анимации она появилась в 1989 году. Суть этого вида анимации в том что формат Gif позволяет помещать в одном файле последовательность отдельных кадров которые можно чередовать на экране через определенное время. Для создания Gifанимации имеется множество программ.
50454. Основные сведения об электрических машинах и аппаратах 1.1 MB
  Обмотка электромагнитного реле контактора магнитного пускателя. обмотка реле тока. обмотка реле напряжения. обмотка статорная обмотка двигателя постоянного тока ДПТ последовательного возбуждения.