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.


 

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

67146. Фонетическое членение речевого потока 60.8 KB
  Вокалические и консонантные системы – это проявление парадигматических отношений между звуковыми единицами. Посмотрим на звуковые единицы с точки зрения синтагматической фонетики (фонотактики). С фонетической точки зрения речь представляет собой поток звуков, который может быть расчленен на линейные, или сегментные единицы.
67147. Язык и речь. Речевая деятельность 110.5 KB
  Различение языка и речи было намечено выдающимся немецким теоретиком языкознания Вильгельмом фон Гумбольдтом (1767–1835). Позже, в отечественном языкознании эту мысль развивал Иван Александрович Бодуэн де Куртенэ (1845–1929). Более детально и последовательно идею о противопоставлении языка и речи разработал...
67148. ДИАГРАММЫ СОСТОЯНИЯ СПЛАВОВ. ПРАВИЛО ФАЗ 35.5 KB
  В сплавах: фазами могут быть чистые металлы жидкие или твердые растворы химические соединения. Число степеней свободы Степень свободы определяется числом независимых переменных например температура концентрация сплава давление которые можно изменять в определенных пределах не нарушая равновесия.
67149. Споживчий ринок товарів. Товарні ресурси 27.87 KB
  Поняття товарних ресурсів класифікація джерела їх створення Баланс ресурсів товарів народного споживання їх роль у прогнозуванні та плануванні внутрішнього ринку товарів народного споживання. За рахунок товарної продукції промисловості сільського господарства а також імпорту товарів формуються товарні ресурси держави.
67150. Геоинформатика и геоинформационные системы 88.5 KB
  Геоинформационная система (ГИС) это система направленная на хранение исходных данных и (или) решение задач связанных с получением конечных данных необходимых для пользователя данной системы.
67151. Последовательностные ИМС 324 KB
  Если выходные сигналы логических элементов и комбинационных микросхем однозначно определяются их текущими входными сигналами то выходные сигналы микросхем с внутренней памятью зависят также еще и от того какие входные сигналы и в какой последовательности поступали...
67152. Технико-экономическое обоснование проектов программных средств 230 KB
  Номенклатура работ их трудоемкость длительность и другие экономические характеристики на этих этапах ЖЦ существенно зависят от характеристик объекта технологии и инструментальной среды разработки. Сокращение этой потребности в ресурсах часто возможно только за счет принципиального изменения...
67154. ПЕРЕЛИВАНИЕ КРОВИ И ЕЕ КОМПОНЕНТОВ 273 KB
  Знать: противопоказания к донорству; антигенные системы крови АВО и Rh; показания противопоказания осложнения технику гемотрансфузий. Уметь: Определять группы крови по системе АВО прямым способом ставить пробы на совместимость при гемтрансфузии оказывать первую...