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


 

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

51533. Определение длины электромагнитной волны по методу Лехера 72 KB
  Электромагнитные волны можно пролучить и в двухпроводной линии если ее подключить к высокочастотному источнику тока рис. При малой частоте генератора тока смещения можно пренебречь по сравнению с токами проводимости и в этом случае электромагнитные явления существенно зависят от сопротивлений линии т. Пусть в точке О двухпроводной линии рис. Электрическое поле будет распространяться вдоль линии и в произвольной точке D1 отстоящей от О на ростоянии х также возникнут гармонические колебания вектора .
51538. Степінь з натуральним показником 65.5 KB
  Мета: Створити комфортні умови для навчання, за яких кожен учень відчуває свою успішність, інтелектуальну спроможність, самостійність. Розвивальна : розвивати логічне мислення учнів через проведення таких операцій як аналіз, систематизація, формувати комунікативно – мовленнєві вміння й навички школярів, розвивати творчі здібності, творчу і пізнавальну самостійність
51540. ЗАПОРІЗЬКА СІЧ В ІІ ПОЛОВИНІ Х\/ІІ СТОЛІТТЯ 82.5 KB
  Історичний атлас портрет Івана Сірка картина Розповідь учителя Демонстрація портрета Івана Сірка. Про народження Сірка легенда розповідає що він зявився на світ із зубами і тількино повитуха піднесла його до столу від одразу ж ухопив звідти пиріг з начинкою і зїв його. сказано що Бог його вибрав Сірка поклавши свій знак з правого боку на губі як червоний плат.
51541. СЦЕНАРІЙ ДО ДНЯ ВЧИТЕЛЯ 54.5 KB
  Ведуча: Вклонiться люди вчителю своєму Володаревi слова i пера Крiзь бiль i радiсть роздуми i втому любов його безсмертна проросла. Ведуча: Дорогi вчителi До Вас сьогоднi слова щирої шани сердечної вдячностi. Ведуча: Щоранку поспiшає до школи наш директор.I сьогоднi дорогий наш директор даруємо Вам...