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.


 

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

67878. ГОСУДАРСТВЕННАЯ ЦЕЛОСТНОСТЬ РОССИЙСКОЙ ФЕДЕРАЦИИ — КОНСТИТУЦИОННЫЙ ПРИНЦИП ФЕДЕРАТИВНОГО УСТРОЙСТВА 132 KB
  Существует два базовых конституционных положения касающихся государственно-правового механизма разграничения полномочий и гарантий обеспечения единства правового регулирования на всей территории Российской Федерации: о высшей юридической силе и прямом действии Конституции Российской...
67879. НАЛОГОВЫЕ ДОГОВОРЫ О НАЛОГОВОМ ПОРУЧИТЕЛЬСТВЕ И ЗАЛОГЕ ИМУЩЕСТВА В РОССИЙСКОЙ ФЕДЕРАЦИИ 66.5 KB
  При первом знакомстве видно что налоговые договорные отношения формализованные в виде налоговых договоров не могут рассматриваться ни как сугубо частные ни как сугубо публичные. Попробуем развернуто обосновать этот тезис для чего обратимся к рассмотрению сущности договорных налоговых правоотношений.
67880. ПРОБЛЕМЫ РЕФОРМИРОВАНИЯ СИСТЕМЫ СМЕТНО-БЮДЖЕТНОГО ФИНАНСИРОВАНИЯ ВЫСШИХ УЧЕБНЫХ ЗАВЕДЕНИЙ В РОССИЙСКОЙ ФЕДЕРАЦИИ 66.5 KB
  Среди методов государственного регулирования системы образования бюджетное финансирование представляется важнейшим рычагом регулятором воздействия государства как на всю систему так и на отдельное образовательное учреждение.
67881. ПРОБЛЕМЫ ИЗУЧЕНИЯ И ВНЕДРЕНИЯ ПРАВОПРИМЕНИТЕЛЬНОЙ ПРАКТИКИ В НОРМОПРОЕКТНУЮ ДЕЯТЕЛЬНОСТЬ: ОПЫТ УКРАИНЫ 97 KB
  С другой стороны обзоры практики применения этих судебных решений подготовленные соответствующими судебными органами обобщения по определенной категории дел письма Высшего Хозяйственного Суда Украины постановления Пленума Верховного Суда Украины не наделены...
67882. ОБЪЕДИНЕНИЕ В ПРОФЕССИОНАЛЬНЫЕ СОЮЗЫ КАК ФОРМА РЕАЛИЗАЦИИ КОНСТИТУЦИОННОГО ПРАВА ЧЕЛОВЕКА НА ОБЪЕДИНЕНИЕ 108.5 KB
  Неотъемлемый элемент гражданского общества развитая система общественных объединений. Конституционное право каждого на объединение и является юридической основой образования и деятельности таких общественных институтов включая профсоюзы.
67883. О ПРОБЛЕМАХ ИСПОЛЬЗОВАНИЯ РЕЗУЛЬТАТОВ ОБЫСКОВ, ПРОВОДИМЫХ ВОЙСКОВЫМИ ПОДРАЗДЕЛЕНИЯМИ (ПО МАТЕРИАЛАМ ДЕЯТЕЛЬНОСТИ ДЕПАРТАМЕНТА ЮСТИЦИИ МИССИИ ООН В КОСОВО) 69.5 KB
  В то же время на практике часто войсковые подразделения КФОР сталкиваются с признаками различных преступлений и впоследствии представляют материалы для рассмотрения возможности возбуждения уголовных дел доказывания вины и привлечения виновных к ответственности.
67884. ПРОБЛЕМЫ И ПЕРСПЕКТИВЫ КОНСТИТУЦИОННОГО РАЗВИТИЯ ЯПОНИИ 131 KB
  Что касается экономики Японии то она испытывает финансовый кризис; назрела необходимость коренной перестройки а любая перестройка страны начинается с Конституции. По общественному опросу проведенному газетой Иомиури сегодня в Японии 65 сторонников изменения Конституции.
67885. АДМИНИСТРАТИВНО-ПРАВОВОЙ РЕЖИМ ПРЕДПРИНИМАТЕЛЬСКОЙ ДЕЯТЕЛЬНОСТИ В ОСОБЫХ ЭКОНОМИЧЕСКИХ ЗОНАХ 72 KB
  Свободные экономические зоны на территории Российской Федерации начали создаваться в конце 80х годов XX в. Они рассматривались как вспомогательный институт государственной экономической политики и как способ стимулирования межгосударственных экономических отношений.
67886. ОСНОВНЫЕ НАПРАВЛЕНИЯ СОВЕРШЕНСТВОВАНИЯ ЗАКОНОДАТЕЛЬСТВА, РЕГУЛИРУЮЩЕГО ПОРЯДОК РАЗРЕШЕНИЯ ЖАЛОБ НА ДЕЙСТВИЯ ТАМОЖЕННЫХ ОРГАНОВ 73 KB
  В настоящее время началась реализация новой Концепции развития таможенных органов Российской Федерации на 2006-2010 гг. Данная концепция является основой разработки программ и планов развития таможенных органов Российской Федерации на среднесрочную и долгосрочную перспективу.