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.


 

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

39358. Управление основными средствами предприятия 70.97 KB
  Провести анализ основных фондов, в том числе. Проанализировать динамику и структуру основных фондов. Проанализировать показатели эффективности использования основных средств. Выявить резервы по увеличению эффективности использования основных фондов
39359. Силовой расчет механизмов с учетом трения в кинематических парах 119.5 KB
  Способность контактирующих поверхностей звеньев сопротивляться их относительному движению называется внешним трением. Трение обусловлено неидеальным состоянием контактирующих поверхностей (микронеровности, загрязнения, окисные пленки и т.п.)
39360. Роль кросс-культурных исследований в изучении психического развития ребенка 51.05 KB
  Предмет кросс-культурной психологии – изучение сходства и различий психологических переменных в различных культурах и этнических общностях. Кросс-культурные исследования проводятся в рамках разных отраслей психологии: общая психология изучает особенности восприятия, памяти, мышления
39361. Распределение доходов. Заработная плата. Бюджет семьи 80.5 KB
  Доходы – это распределенный продукт, который субъекты экономических отношений получают для личного и производственного потребления. Доходы бывают натуральные (материальные блага и услуги) и денежные.
39362. Привод транспортера 877.5 KB
  При этом марки сталей выбирают с учетом наибольших размеров пары: диаметра для валашестерни и толщины сечения для колеса с припуском на механическую обработку после термообработки. Сочетание шестерни закаленной при нагреве ТВЧ и улучшенного колеса дает большую нагрузочную способность чем улучшенная пара с той же твердостью колеса. Такая пара хорошо прирабатывается; ее применение предпочтительно если нельзя обеспечить высокую твердость зубьев колеса.2 [1] одинаковый для шестерни и колеса но с разными твердостями так как твердость зубьев...
39363. Тарифная политика страховщика на региональном рынке страхования (по различным видам) 44.17 KB
  Только правильно сформированная и реализованная тарифная политика сможет обеспечить выполнение целей и задач страховой компании: рентабельность деятельности и общедоступность страхования для населения, организаций и государства.
39364. Расчет и основные характеристики привода ленточного конвейера 941 KB
  Мощность двигателя зависит от требуемой мощности рабочей машины а его частота вращения от частоты вращения приводного вала рабочей машины.2 Определение передаточного числа привода и его ступеней Передаточное число привода определяется отношением номинальной частоты вращения двигателя к частоте вращения приводного вала рабочей машины при номинальной нагрузке и равно произведению передаточных чисел закрытой и открытой передач.1 Частота вращения приводного вала рабочей машины 6 где: скорость тягового органа м с; диаметр...
39365. Проект детского кафе на 50 мест в Торгово- офисном центре г. Пушкино 1.34 MB
  Разработка проекта детского кафе проведена в здании реально существующего Торгово-офисного центра «ВИТ», расположенного в г. Пушкино, ул. Чехова 12. Привлекательность реализации данного проекта обосновывается положительными прогнозами экспертов относительно роста численности целевой аудитории детских кафе в России в последующие годы.
39366. Социальная организация понятие, признаки и функции 84.5 KB
  Социальная организация — это социальная система, которая характеризуется определенной коллективной тождественностью (идентичностью), имеет точный список членов, программу деятельности и процедуру перемещения (или замещения) членов.