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


 

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

53602. Работа в сети Интернет. Электронная почта 60 KB
  Электронная почта Этапы работы Содержание этапа заполняется педагогом Оценка эксперта по базовым педагогическим компетенциям и уровню владения учебным материалом 1. Методы: беседа Педагог здоровается отмечает отсутствующих в группе. Определение целей и задач которых педагог хочет достичь на данном этапе урока: повторение и закрепление теоретических знаний предыдущего занятия; закрепление практических навыков сохранения информации из интернета стимулирование обучающихся к быстрому выполнению работы воспитание эстетического...
53603. Конспект урока обучение грамоте: «Написание заглавной буквы «Т» 40.5 KB
  Детям предлагается игра Угадай букву по описанию Ставим ручку на верхнюю линию рабочей строки опускаемся по наклонной линии поднимаемся по наклонной до середины выполняем узелок уходим вправовверх и на 1 3 выписываем секрет по секрету наклонная вниз качалочка крючок до середины Ставим ручку на 1 3 сверху уходим влево вверх задерживаемся на строке опускаемся по наклонной вниз выполняем качалочку поднимаемся по крючку до середины две части соединяем секретом по секрету наклонная линия вниз качалочка крючок до середины...
53604. Введение в информатику. Правила техники безопасности 582.5 KB
  Дидактическая цель: дать общее представление об информатике как о науке ввести понятие информатика cформировать знания по технике безопасности работы в компьютерном классе. Знать: формулировку понятия информатика основные правила техники безопасности нормы работы в компьютерном классе основные упражнения физкультминутки. Информатика и ИКТ : учебник для 7 класса Н. Вначале мы узнаем что изучает предмет информатика а также поймем значимость этого предмета в современном мире.
53605. Оценка облигаций 23 KB
  Номинальная цена напечатана на бланке облигации и обозначает сумму, которая берется взаймы и подлежит возврату по истечении срока облигационного займа.
53606. Сантиметр 30 KB
  Сколько грибков у белочки Сколько грибков у ежика Как узнать сколько всего грибков Как записать это выражение Клик Прочитайте это выражение разными способами. Устное решение примеров слайд 4 кликаем Задания с окошками слайд 5 кликаем Восстановление числового ряда слайд 6 кликаем Задание от гнома Найти лишнюю фигуру слайд 7 почему...
53607. Компоненты оборотных активов 30 KB
  Оборотные средства (current assets) – это активы предприятия, возобновляемые с определенной регулярностью для обеспечения текущей деятельности, вложения в которые как минимум однократно оборачиваются в течение года или одного производственного цикла.
53608. Сложение и вычитание смешанных чисел 139 KB
  Высота Тайницкой башни м Благовещенской м. На сколько первая выше второй 2 Высота Водовзводной башни м Комендантской башни м Петровской башни м а Первой Безымянной м. Какая высота четырёх башен вместе 3 Высота Никольской башни до звезды м. Какова высота Угловой Арсенальной башни 4 Высота Боровицкой башни 54 м а Беклемишевской м.
53609. Основные теории структуры капитала: традиционная, Модильяни-Миллера 27 KB
  Соотношение между собственными и заемными источниками средств является одним из ключевых аналитических показателей, характеризующих степень риска инвестирования финансовых ресурсов в данное предприятие
53610. Парные звонкие глухие согласные 174 KB
  Развивающие цели: Развитие художественных представлений и умений творческой деятельности. Развитие восприятия: Развитие целостности предметности осмысленности восприятия. Развитие речи: Развитие диалогической и монологической речи развитие содержательности понятности и выразительности речи. Развитие памяти: Развитие образной эмоциональной памяти.