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


 

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

355. Проектирование информационной системы по учету материалов 899.5 KB
  Обзор программных средств для решения поставленной задачи. Учет материалов на складах и его неразрывная связь с учетом материалов в бухгалтерии. Данная программа предоставляет возможность формировать выходные данные, такие как: печатные формы документов, отчеты, а также корректировать информацию.
356. Екологічне право України 798 KB
  Особливості права використання рекреаційних, курортних і лікувально-оздоровчих зон. Користування надрами, атмосферним повітрям, водокористування. Поняття екологічних надзвичайних ситуацій, зон та їх класифікація.
357. Электрические аппараты 194.5 KB
  Классификация электрических аппаратов. Коммутационные аппараты распределительных устройств. Воздействие механических и климатических факторов на электроаппараты. Электродинамические усилия в электрических аппаратах.
358. Гражданское право. Виды правовых договоров 761.5 KB
  Понятие, признаки и содержание договора купли-продажи. Охрана и управление наследственным имуществом. Предоставление жилого помещения социального пользования в домах государственного жилого фонда. Подряд на выполнение проектных и изыскательских работ.
359. Информационные базы данных. Порядок определения ключевых полей 491 KB
  Порядок определения ключевых полей. Одиночная, связанные и подчинённая формы. Создание кнопок, переключателей и выключателей. Создание схемы данных. Размеры величин, представляемых в числовом поле.
360. Экономика предприятия. Понятия предприятия 625 KB
  Понятие предприятия, цели и направления деятельности. Классификация и структура персонала предприятия. Классификация, структура и оценка основных производственных фондов. Основные принципы организации и регулирования оплаты труда.
361. Выполнение работ по профессии Контролер (Сберегательного банка) 660.5 KB
  Порядок совершения операций по приему денежной наличности в кассу кредитной организации от юридических и физических лиц. Выполнение и оформление кассовых операций. Операции с поврежденными и сомнительными денежными знаками иностранных государств.
362. Особенности развития гибкости при занятиях гимнастикой у девочек 7-8 лет 303.5 KB
  Художественная гимнастика как вид спорта. Гибкость как физическое качество. Возрастные особенности развития девочек 7-8 лет. Тренировочный процесс на занятиях по художественной гимнастике в СДЮСШОР №1 Калининского района.
363. Модель промислового верстата з ЧПУ 1.84 MB
  Промисловий верстат з ЧПУ використовується для обробки різного роду матеріалів, нанесення зображень на різні види поверхонь, отримання різного роду фігурних елементів, фрезерних робіт.