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 просто виводить повідомлення про помилку.


 

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

71111. Общество, семья, личность 39.03 KB
  Слово Семья восходит к корню сем имеющему отношение к семени и продолжению рода то есть рождению и воспитанию детей которое традиционно считается основным предназначением создания семьи. Иногда для обозначения семьи или родословной используется латинское слово фамилия...
71112. Психологические аспекты подготовки молодежи к семейно-брачным отношениям 131.9 KB
  Гребенникова сейчас в нашей стране подавляющее большинство браков заключаются по любви. Долго и упорно боролись за это люди ведь без взаимной любви нет и не может быть личного счастья. Но дело в том что даже настоящее взаимное чувство любви ещё не означает того что молодые люди готовы к браку.
71113. Семья как малая группа. Причины, мотивы брака, их возрастная динамика 218.53 KB
  Начинается семья с двух человек самая большая семья в мире состоит из родителей и двадцати одного ребенка Семье как социальной группе свойственен феномен гетерогенности разнородности члены семьи различаются по полу по возрасту по уровню образования доходам склонностям и привычкам...
71114. Психология семейного взаимодействия. Законы супружеских отношений 367.96 KB
  Однако здесь идет речь именно об идентификации себя с другим человеком установке которая объясняет миф о телепатии между членами семьи. Взаимодополнение это ситуация когда отношения внутри семьи строятся с учетом разницы в индивидуальных особенностях людей которые уважают...
71115. Выравнивание и восстановление формы покрытия с добавлением новой смеси 20.94 KB
  Нагрев асфальтобетонного покрытия производится газовыми горелками инфракрасного излучения которые объединены в блоки или панели. Подготовка к постоянному режиму: Вначале в течение 67 минут производится подогрев покрытия. Количество панелей расстояние от покрытия...
71116. Уширение дорожной одежды 588.96 KB
  Способ уширения дорожной одежды обычно определяется способом уширения земляного полотна а также зависит от необходимости произвести усиление дорожной одежды. Уширение начинают со срезки обочины и откоса ниже дорожной одежды. Одновременно с устроенным слоем дорожной...
71117. Подготовительные работы к реконструкции земляного полотна 479 KB
  Подготовительные работы к реконструкции земляного полотна В состав основных подготовительных работ входят создание геодезической разбивочной основы перенос коммуникаций; расчистка дорожной полосы и территорий отведенных под карьеры и резервы...
71118. Тепловой эффект ферментации и тепловой баланс ферментера (классификация ферментеров). Тепловой эффект процесса ферментации 84.5 KB
  Основой роста и размножения клеток является ассимиляция веществ из окружающей среды. Это – т.н. конструктивный (строительный) обмен или анаболизм. Он немыслим без расхода энергии. Он также невозможен без процессов противоположного типа - катаболизма.
71119. Отделение клеток для получения конечного продукта 87 KB
  Наиболее желательно фильтрование с образованием слоя осадка. В производственных условиях при эксплуатации установок систематически проводят промывку продувку и сушку осадка на фильтрах. В процессе фильтрования движущая сила и сопротивление осадка меняются поэтому скорость м с величина...