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 формально відмовляється від відновлення виконання програми і завершує її.


 

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

38011. ИССЛЕДОВАНИЕ АЛГОРИТМОВ НА ГРАФАХ 1.78 MB
  Краткая теория Представление графов Для представления графов чаще всего применяется матрица смежности – это матрица [n n] где n число элементов а элементы [i j] могут быть равны значению 0 или x – flse или 1 – true в зависимости от того присутствует ли дуга из вершины i в вершину j рис.n] of integer то можно составить оператор L_SMEG_V который определяет множество смежных вершин для заданной вершины v и записывает их в вектор типа ms. function L_SMEG_Vv2 n1:integer; vr k1:integer:ms; {v2 – это вершина для которой ищут все...
38012. ОПРЕДЕЛЕНИЕ ЭФФЕКТИВНОСТИ И СЛОЖНОСТИ ИССЛЕДУЕМЫХ АЛГОРИТМОВ 146.5 KB
  Краткая теория Теория сложности алгоритмов Сложность алгоритма характеристика алгоритма определяющая зависимость времени выполнения программы описывающей этот алгоритм от объёма обрабатываемых данных. Формально определяется как порядок функции выражающей время работы алгоритма. Эффективность алгоритма – временная сложность в самом худшем случае Ofn или просто fn.
38013. ИЗУЧЕНИЕ БЕТА –АКТИВНОСТИ 145.5 KB
  10 ЛАБОРАТОРНАЯ РАБОТА № 95 ИЗУЧЕНИЕ БЕТА –АКТИВНОСТИ Цель работы Изучение явления бета распада определение длины пробега –частиц и максимальной энергии –частиц радиоактивного источника. Например радиоактивный изотоп водорода испускает –частицы с Еmx = 18 кэВ а изотоп азота – с Еmx = 166 МэВ. Типичная кривая распределения –частиц по энергиям изображена на рис.1 где dN dE– число –частиц имеющих полную энергию от Е до Е dЕ Еmx –максимальная энергия –частиц данного радиоактивного вещества.
38014. Изучение нормального закона распределения случайных величин (закон Гаусса) на основе опытных данных 190 KB
  Составить интервальную таблицу частот статистический интервальный ряд распределения: а Разбить весь диапазон случайных величин на k интервалов. Строки 13 Таблицы 3 называют статистическим интервальным рядом распределения. Интервальный ряд распределения изобразить графически в виде гистограммы.
38015. ФОТОМЕТРИЧЕСКОЕ ТИТРОВАНИЕ 115.5 KB
  Если измерение ведется на определенной длине волны а прибор снабжен монохроматором процесс титрования называют спектрофотометрическим титрованием. находят по резкому перегибу полученной в ходе титрования графической зависимости оптической плотности раствора поглощения пропускания от объема добавленного титранта. При СФтитровании достигается особая селективность что связано с возможностью перехода в ходе титрования многокомпонентных систем от одной длины волны к другой.
38016. ДИФФЕРЕНЦИАЛЬНАЯ ФОТОМЕТРИЯ 176.5 KB
  Сущность метода Точность спектрофотометрического анализа можно значительно повысить если измерять не абсолютную величину оптической плотности анализируемого раствора а ее относительную величину ΔD проводя измерения раствора с концентрацией Сx против эталона уже содержащего определяемый компонент в известной концентрации Со. Однако способы настройки существенно отличаются в разных вариантах фотометрического анализа: Способ настройки 1 2 3 4 5 Концентрация раствора в кювете во время настройки на Т = 100 0 С0 С0 или Сх 0 С 0 Концентрация...
38017. Запуск и настройка СУБД VFP 6.0 133 KB
  Вызывается Ctrl F2.0 специальные и функциональные клавиши Сочетание клавиш Пункт меню Комментарий CtrlN File New Создать новый файл CtrlO File Open Открыть существующий файл CtrlS File Sve Сохранить текущий файл CtrlP File Print Печать CtrlZ Edit Undo Отменить действие CtrlR Edit Redo Повторить действие CtrlX Edit Cut Вырезать CtrlC Edit Copy Копировать CtrlV Edit Pste Вставить Ctrl Edit Select ll Выделить все CtrlF Edit Find Найти в текущем файле CtrlG Edit Find gin Найти следующий CtrlL Edit Replce CtrlD Progrm Do CtrlM...
38018. ИЗУЧЕНИЕ И ПРИМЕНЕНИЕ ФИЗИЧЕСКОГО И МАТЕМАТИЧЕСКОГО МАЯТНИКОВ 98.63 KB
  Ознакомление с физическим и математическим маятниками изучение периодического движения маятников как примера колебаний в системах с одной степенью свободы. Измерение ускорения силы тяжести с помощью математического маятника. Измерение периода колебаний физического маятника и сравнение его с расчётным значением. Измерение момента инерции тела сложной формы с помощью физического маятника.
38019. Основы электрохимии 48.5 KB
  В пробирку налить 2 мл раствора йодида калия KJ добавить 2 – 3 капли раствора уксусной кислоты CH3COOH затем прилить 1 мл раствора перекиси водорода H2O2. В пробирку налить 2 мл раствора перманганата калия KMnO4 добавить 2 – 3 капли раствора серной кислоты H2SO4 затем прилить 1 мл раствора перекиси водорода H2O2. Собрать гальванический элемент из двух металлических электродов и растворов электролитов: зачистить наждачной бумагой две металлические пластинки промыть их дистиллированной водой просушить фильтровальной...