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


 

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

70457. Эффекты восприятия как перцептивные ошибки 28.5 KB
  Проблема группы в социальной психологии. Проблема группы – это ключевое понятие социальной психологии. Группа может изучаться с позиции любой общности: социальной производственной бытовой экономической целевой и т. Основы социальной стратификации заложены М.
70458. Общность и группы 37 KB
  Не только общество но и отдельный человек живет по законам группы. Сегодня человек не мыслит себя вне группы: он член семьи ученического класса молодежной тусовки производственной бригады спортивной команды. В зависимости от того в какой мере объективная принадлежность индивида...
70459. Развитие групп 27.5 KB
  Формирование стадия на которой происходит отбор членов группы в соответствии с их функциональным или техническим опытом для выполнения целей стоящих перед группой. Члены группы знакомятся обмениваются официальной информацией друг о друге вносят предложения о работе группы например...
70460. Руководство и лидерство как формы социальной власти в группе 28.5 KB
  Лидерство и руководство рассматриваются в социальной психологии как групповые процессы связанные с социальной властью в группе. Под лидером и руководителем понимается человек оказывающий ведущее влияние на группу: лидер в системе неформальных отношений руководитель...
70461. Конфликт как форма социального взаимодействия 30 KB
  Понятие конфликт характеризуется исключительной широтой содержания и употребляется в разнообразных значениях. Самым общим образом конфликт можно определить как предельное обострение противоречий. В специальной литературе конфликты рассматриваются на социальном...
70462. Основные модели конфликта 44.5 KB
  Любые организационные изменения противоречивые ситуации деловые и личностные отношения между людьми нередко порождают конфликтные ситуации которые субъективно сопровождаются серьезными психологическими переживаниями.
70463. Проблема оптимального и эффективного поведения в конфликт 48 KB
  Методы прекращения конфликта. Уклонение Такой стиль поведения обычно выбирают в тех случаях когда: проблема вызвавшая столкновение не представляется субъекту конфликта существенной; предмет расхождения по его мнению мелочный основан на вкусовых различиях не заслуживает траты времени и сил...
70465. Общение в единстве процессов обмена информации, восприятия и понимания людьми друг друга, воздействия и взаимодействия 50 KB
  Из определения общения вытекает что это сложный процесс в который входят три составляющие: коммуникативная сторона общения обмен информацией между людьми; интерактивная сторона организация взаимодействия между индивидами; перцептивная сторона процесс восприятия друг друга партнерами...