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.


 

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

82397. Волны в океане 57.5 KB
  Цели и задачи: объяснить образование ветровых волн цунами приливов; Описание строения ветровых волн; Практическое использование приливной волны; Совершенствовать умение работы с картами атласа. Приходилось ли вам наблюдать волны на поверхности реки моря Что вы можете о них вспомнить?
82398. А.И. Куприн «Барбос и Жулька» 44.55 KB
  Так о каком же животном пойдёт речь сегодня Какие породы собак вам известны И тема нашего урока А. На свете множество собак И на цепи и просто так: Собак служебных – пограничных Дворовых шариков обычных И молодых пугливых шавок Что тявкать любят из подлавок И тех изнеженных болонок Чей нос курнос...
82399. Царь и кузнец (притча) 100.7 KB
  Это воистину волшебные создания С давних времен бабочки ассоциировалось с легкостью и беззаботностью. Среди скандинавов и славян бабочки олицетворяли душу человека а также служили символом всех влюбленных. С древних времен бабочки вызывали восхищение и являлись символом просветления...
82400. ПРИЕМЫ И ПРИНЦИПЫ АНАЛИЗА ХУДОЖЕСТВЕННОГО ПРОИЗВЕДЕНИЯ 74 KB
  Теория искусства при характеристике идейного содержания произведения в первую очередь выявляет авторское понимание объяснение жизни выраженное в произведении и авторский приговор оценку ее не противопоставляя идейную и художественную стороны.
82401. Использование технологии продуктивного чтения на уроках в начальной школе 405 KB
  Тот кому недоступно искусство чтения невоспитанный человек нравственный невежда. Сегодня начальная школа реализует Стандарт второго поколения который поставил задачу освоения обучающимися умений полноценного чтения что предполагает готовность школьников к решению таких познавательных и...
82403. Налоги. Восхождение на пик налогов 70.5 KB
  Цели: Образовательная: Обобщение и закрепление знаний учащихся по теме: «Налоги». В игровой форме выявить теоретические знания и практические умения и навыки учащихся. Развивающая: способствовать развитию логического мышления; активизировать мыслительную деятельность учащихся.
82404. Системы линейных уравнений с двумя переменными 44 KB
  Недостатком в данном случае является - колоссальная подготовка такого урока. Если выбираем вариант использования готового электронного образовательного ресурса то учителю необходимо: Тщательно проанализировать содержание ЭОРа на соответствие целям и задачам урока. Написать конспект урока.