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


 

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

76645. Русские земли в 15 в. и европейское средневековье. Складывание централизованного государства. Возвышение Москвы 39 KB
  Возвышение Москвы Как и в Западной Европе после периода феодальной раздробленности на Руси в XIVXV вв. На Руси хотя экономические связи между отдельными княжествами без сомнения развивались но общий всероссийский рынок возник позже только в XVII в. Таким образом политические процессы на Руси опережали экономические. Усилиями нескольких поколений выдающихся деятелей на Руси складывается такое государство.
76646. Россия в 16 в. в контексте развития европейской цивилизации. Иван-4 – первый царь Всея Руси. Опричина 35 KB
  Период опричнины В 1560 г. царь вводит новый порядок управления государством получивший название опричнины. Политическим и административным центром опричнины стал особый двор со своей Боярской думой и приказами. В опричнине была особая казна и особое опричное войско: первоначально одна тысяча к концу опричнины шесть тысяч.
76647. Россия в 16 в. в контексте развития европейской цивилизации. «Смутное время». Воцарение династии Романовых 38 KB
  Главной отраслью экономики России оставалось с х а основными с х культурами были рожь и овес. За счет освоения новых земель в Поволжье в Сибири на юге России производилось больше с х продукции чем в прошлом веке хотя методы обработки земли оставались прежними с помощью сохи бороны; плуг внедрялся медленно. период в истории России названный Смутным временем.
76648. Россия и мир в 18 в. Оформление Российского абсолютизма. Петр 1 27 KB
  В России в XVIII в. При Петре I в России окончательно утвердился абсолютизм Петр был провозглашен императором что означало усиление власти самого царя он стал монархом самодержавным и неограниченным. В России была проведена реформа государственного аппарата вместо Боярской думы учреждался Сенат в состав которого входили девять сановников ближайших Петру I. В России упразднялась должность патриарха наблюдение за церковью поручалось оберпрокурору Синода.
76649. Россия и мир в 18 в. Попытки модернизации и промышленный переворот. Дворцовые перевороты 33 KB
  Петр I умер 28 января 1725 г.Меншиков представитель новой родовой знати возвел на престол вдову Петра I Екатерину I. В его состав вошли соратники Петра I: А. После смерти Екатерины I наследным императором стал 12 летний Петр II внук Петра I.
76650. Первичные сигналы электросвязи и их параметры 162.04 KB
  Основными первичными сигналами электросвязи являются: телефонный звукового вещания факсимильный телевизионный телеграфный передачи данных. Описанием сигнала может служить некоторая функция времени. Однако такое полное определение сигнала не всегда требуется. Достаточно описание в виде нескольких параметров характеризующих основные свойства сигнала с точки зрения его передачи.
76651. Модуляция и искажения сигналов 382.29 KB
  Частотная модуляция процесс изменения частоты несущего сигнала в соответствии с мгновенными значениями модулирующего сигнала. Рассмотрим математическую модель частотно-модулированного ЧМ сигнала при гармоническом модулирующем сигнале. При воздействии модулирующего сигнала...
76652. Волновое мультиплексирование. Элементы WDM систем 308.75 KB
  Интенсивные пики рассеяния наблюдаются тогда когда выполняется условие Вульфа Брэгга kG = G2 2 4 где k волновой вектор G вектор обратной решётки то есть при условии что рассеянная волна совпадает по фазе с падающей. Это соотношение называется условием Вульфа Брэгга. Решетки Брэгга и волоконно-оптические решетки Брэгга FBG На рисунке 7 приведена модель которую мы будем использовать для описания принципа работы дифракционной решетки Брэгга. Решетка Брэгга является...
76653. Изучение настройки DSL-модема 366.84 KB
  DMT модуляция Сначала несколько слов о модуляции DMT которая в основном и используется DSL модемами.Lite 05 80 DSL2 10 120 DSL2 10 240 DSL2 nnex M 35 240 В DSL используется метод модуляции дискретное многотоновое кодирование DMT. При этом вся полоса пропускания DSL разбивается на 512 каналов.