69718

Вкладені блоки try-catch

Доклад

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

При обробці дійсно складних виключень, ви можете зацікавитися можливістю вкладати блоки try і оператори catch всередину інших операторів catch. C++ допускає вкладені блоки try, іншими словами, ви можете згенерувати нове виключення при обробці попереднього.

Украинкский

2014-10-09

28 KB

0 чел.

Тема 8: Вкладені блоки try-catch

При обробці дійсно складних виключень, ви можете зацікавитися можливістю вкладати блоки try і оператори catch всередину інших операторів catch. C++ допускає вкладені блоки try, іншими словами, ви можете згенерувати нове виключення при обробці попереднього. Характер такої дії залежить від першого оброблюваного вами виключення.

Розглянемо приклад програмування. У лістингу 16.2 показаний початковий текст програми Error2.CPP, яка ілюструє вкладені блоки try. Програма генерує головне виключення, а потім - вторинну помилку в опера¬торе catch, який обробляє головне виключення. Цього оператора містить вкладений блок try і вкладені опе¬ратори catch. Операторів catch виводять повідомлення про виключення, яке вони обробляють.

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

Throwing the main exception Hand I i ng ma i n except i on Handl ing exception еггогз

Лістинг 16.2

Початковий текст програми Error2. СРР

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

// вкладені блоки try

#include <iostream.h>

// оголосити скелетні класи виключень class mainerror {; class error! {; class error2 {; class еггог3{;

main()

{

int nnum = 123;

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

}

cout « "Throwing the main exception\n";

try {

throw mainerror(); }

catch (mainerror) { cout « "HANDI ing main exception\n"; try { if (nnum < 10) throw error1(); else if (nnum < 100)

throw error2(); else if (nnum < 1000) throw error3();

catch (errorl)

cout « "Handling exception errorl"; catch (error2)

cout « "Handling exception error2"; catch (еггогз)

cout « "Handling exception еггогз"; catch (...)

cout « "Handling other errors\n";

catch (int ncode)

cout « ncode « " is not а valid int\n"; catch (char ccode)

cout « ccode « " is not а val id char\n" catch (long I Code)

cout « I Code « " is not а val id long\n"

return 0;

У лістингу 16.2 оголошені скелетні класи виключень mainerror, errorl, error2 і еггогз, а також визначена функція main, яка оголошує і ініціалізував змінну nnum типу int. Функція виводить повідомлення, а потім генерує виключення mainerrr в блоці try, за яким слідують чотири оператори catch, оброблювальних виключень типів mainerror, int, char і long. Першого оператора catch виводить повідомлення про помилку, а потім виконує мультіальтернатівний оператора if усередині вкладеного блоку try. Цього оператора if генерує виключення errorl або error2, або еггог3 залежно від значення змінної nnum. За вкладеним блоком try слідують чотири оператори catch, які обробляють виключення errorl, error2, еггогз і всі інші виключення. Кожного оператора catch просто виводить повідомлення про помилку.


 

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

85239. АНАЛИЗ ОРГАНИЗАЦИИ И ОЦЕНКА ЭФФЕКТИВНОСТИ ВНЕДРЕНИЯ CRM-СИСТЕМЫ 2.56 MB
  Целью данной работы является оценка эффективности внедрения CRM-системы «Петрол плюс». Для достижения поставленной цели выполняются следующие задачи: Описание особенностей, видов и этапов внедрения CRM-систем; Обоснование показателей эффективности внедрения CRM-систем...
85240. Активное управление портфелем ценных бумаг в условиях неопределенности и риска 1.81 MB
  На современном этапе реформирования экономики Украины, актуальной проблемой является обеспечение полноценного функционирования фондового рынка, как эффективного механизма перераспределения финансовых ресурсов между субъектами экономической деятельности.
85241. Пути повышения эффективности управления оборотными активами ОАО «Дзержинский мясокомбинат» 550.5 KB
  Теоретические основы управления оборотными активами Общие основы управления оборотными активами Особенности управления оборотными активами Анализ технико-экономических и финансовых показателей ОАО Дзержинский мясокомбинат Пути повышения эффективности управления оборотными активами ОАО Дзержинский мясокомбинат Анализ состава и структуры оборотных активов ОАО Дзержинский мясокомбинат Оптимизация размера основных видов оборотных активов Пути рационального использования оборотных средств ОАО Дзержинский...
85243. Совершенствование организации процесса приготовления и приготовление сложных горячих фирменных блюд из мяса (говядины, телятины, свинины) в ресторанной кухне с использованием современных технологий и оборудования 153.5 KB
  Актуальность моей работы заключается в том, что она имеет практическую значимость для предприятий общественного питания. Результаты проделанной работы могут быть использованы для разработки рецептур мясных блюд европейской кухни и определения технологических нормативов закладки сырья, что необходимо...
85244. Особенности маркетинга кинорынка и специфика кинопродукции как объекта маркетинга 386.3 KB
  Вопросам развития рекламы всегда придавалось огромное значение. Значение рекламы наилучшим образом раскрывается в законе перепроизводства который гласит: в экономике производящей больше товаров и услуг чем их может быть потреблено реклама обеспечивает потребителей информацией об альтернативах выбора...
85245. ПРОЕКТИРОВАНИЕ ЛИНИИ СВЯЗИ НА УЧАСТКЕ ЖЕЛЕЗНОЙ ДОРОГИ 957.71 KB
  На основе разнообразных линий передачи создана собственная обширная ведомственная сеть электросвязи МПС, предназначенная для оперативного руководства технологическим процессом работы ж.д.транспорта