69719

Обробка несподіваних виключень

Лекция

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

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

Украинкский

2014-10-09

27.5 KB

0 чел.

Тема 9: Обробка несподіваних виключень

Обробка виключень може бути "хитрою" справою. Скільки б ви не планували обробок виключень, ви можете все ж таки зіткнутися з несподіваними виключеннями. Використання оператора catch (...) - ось один із способів обробки таких виключень. C++ пропонує ще один спосіб. У заголовному файлі Ехсерт.Н оголошені функції unexpected і set_unexpected. За умовчанням виконуюча система викликає функцію unexpected, якщо оператор catch(...) не використовувався після блоку try. За допомогою функції set_unexpected можна замінити стандартну функцію unexpected вашою власною функцією. Щоб використовувати функцію set_unexpected, викличте її і передайте їй ім'я вашої власної функції як єдиний аргумент.

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

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

Hand I i ng unexpected exception!

Лістинг 16.5

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

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

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

#include <iostream.h>

#include <except.h>

#include <stdlib.h>

// оголосити скелетні класи виключень

class mainerror {};

class secerror {};

class Kaboom {};

void badnewsq 

{

throw Kaboom();

}

void solver(int ncode) throw(mainerror, secerror)

{

if (ncode > 0) throw mainerror();

else if (ncode < 0) throw secerror();

badnewsq();

}

void myunexpectedo {

cout « "Handling unexpected except ion!\n";

exrt(1); // вихід з кодом помилки 1 }

ma i n() {

set_unexpected(myunexpected);

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

try {

solver(O);

}

catch (mainerror)

{ cout « "HANDI ing main exception\n";

}

catch (secerror)

{ cout « "Handl ing secondary exception\n";

}

return 0;

}

Лістинг 16.5 включає заголовні файли IOSTREAM.H, Ехсерт.Н (вони потрібні для того, щоб використовувати функцію set_unexpected) і STDLIB.H (він необхідний для того, щоб використовувати функцію exit). У лістингу 16.5 оголошені скелетні класи виключень mainerror, secerror і Kaboom, а потім декларують функції badnews, solver, myunexpected і main.


 

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

1770. MooTools Essentials The Official MooTools Reference for JavaScript and Ajax Development 1.41 MB
  A Note on the Code Formatting in This Book. Why You Should Use a JavaScript Framework. Anonymous Methods vs. Named Functions. Adding and Removing Element Events. Writing Flexible Classes.
1771. Разработка методики оценки качества цифровой печати 1.4 MB
  Современное состояние и перспективы развития индустрии цифровой печати, проблемы качества и стандартизации. Методика объективной оценки качества печати. Определение ситуации оценивания и построение дерева свойств. Изучение влияния настроек цифровой печатной машины на качество печати. Перспектива использования комплексной оценки качества цифровой печати .
1772. Технология виртуальной реальности как феномен культуры конца XX – начала XXI веков 1.4 MB
  СЕМАНТИЧЕСКОЕ ПОЛЕ ТЕРМИНА ВИРТУАЛЬНАЯ РЕАЛЬНОСТЬ. ОБЛАСТИ ПРАКТИЧЕСКОГО ИСПОЛЬЗОВАНИЯ ТЕХНОЛОГИИ ВИРТУАЛЬНОЙ РЕАЛЬНОСТИ. СОЦИОКУЛЬТУРНЫЕ СВОЙСТВА КОМПЬЮТЕРНОЙ ВИРТУАЛЬНОЙ РЕАЛЬНОСТИ. ВИРТУАЛЬНАЯ РЕАЛЬНОСТЬ КАК СРЕДСТВО РЕПРЕЗЕНТАЦИИ ВОЕННЫХ ДЕЙСТВИЙ. ВИРТУАЛЬНАЯ РЕАЛЬНОСТЬ ВО ВЗАИМОДЕЙСТВИИ С ДРУГИМИ ФЕНОМЕНАМИ КУЛЬТУРЫ.
1773. ИСТОРИЯ И СОВРЕМЕННОЕ СОСТОЯНИЕ СИСТЕМНОГО ПОДХОДА В ОТЕЧЕСТВЕННОЙ ПСИХОЛОГИИ 1.39 MB
  Реконструкция истории системного подхода в отечественной психологии как методологическая проблема. Периодизация развития идеи системного подхода в отечественной психологии. Десятилетие 80-х гг. ХХ века в истории системного подхода в отечественной психологии – бум системности. Итоги анализа и будущее идеи системного подхода в психологии.
1774. УЧЕБНАЯ АКТИВНОСТЬ В СТРУКТУРЕ ИНТЕГРАЛЬНОЙ ИНДИВИДУАЛЬНОСТИ СТУДЕНТОВ В СВЯЗИ СО СПЕЦИАЛИЗАЦИЕЙ И ЭТАПАМИ ОБУЧЕНИЯ 1.39 MB
  Основные положения теории интегральной индивидуальности. Активность и ее роль в структуре интегральной индивидуальности. Методика исследования свойств личности. Особенности учебной активности студентов в связи со специализацией и этапами обучения. Учебная активность в структуре интегральной индивидуальности студентов в связи со специализацией и этапами обучения.
1775. НАРОДЫ КАВКАЗА В ВООРУЖЕННЫХ СИЛАХ СССР В ГОДЫ ВЕЛИКОЙ ОТЕЧЕСТВЕННОЙ ВОЙНЫ 1.39 MB
  Состояние и использование людских ресурсов Кавказа в первые годы войны. Приостановки мобилизации и призыва у закавказских народов осенью 1943 г. Воинские части с участием кавказцев в начальный период войны (1941 – ноябрь 1942 г.). Идеология патриотизма и национальный вопрос. Деятельность армейских политических органов и командиров по воспитанию личного состава кавказских национальностей.
1776. Право на жизнь и смертная казнь: проблемы конституционно-правовой регламентации в Российской Федерации 1.38 MB
  Понятие права на жизнь по международному и российскому законодательству. Смертная казнь в системе мер, направленных на защиту естественного права на жизнь. Международно-правовые и внутригосударственные ограничения применения смертной казни. Аспекты совершенствования правовой регламентации смертной казни в соответствии с обязательствами Российской Федерации перед Советом Европы.
1777. ИНДИВИДУАЛЬНО-ПСИХОЛОГИЧЕСКИЕ ОСОБЕННОСТИ АДАПТИВНОСТИ ЖЕНЩИН К СОСТОЯНИЮ БЕРЕМЕННОСТИ 1.38 MB
  Обоснование программы и метода исследований. Психофизиологический уровень. Специальная теория темперамента В.М. Русалова. Техника построения генограммы. Построение и анализ генограмм. Диагностика особенностей атрибутивных стилей. Проектирование психологической коррекции. Особенности психотерапевтической работы с каждой группой.
1778. КОНЦЕПТУАЛЬНЫЕ МЕТАФОРЫ ВРЕМЕНИ В СОВРЕМЕННОМ АНГЛИЙСКОМ ЯЗЫКЕ 1.37 MB
  Целью настоящего исследования является изучение изменения концепта времени в английском языке сквозь призму концептуальных метафор времени и их языковых реализаций.