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


 

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

5953. Единая концепция специального федерального государственного стандарта для детей с ограниченными возможностями: основные положения 51.98 KB
  Единая концепция специального федерального государственного стандарта для детей с ограниченными возможностями: основные положения Введение Специальные федеральные государственные образовательные стандарты для детей с ограниченными возможностями здор...
5954. Эффективность воспитательной работы. Проблема критериев и норм воспитанности. Оценка уровня воспитанности. 57 KB
  Эффективность воспитательной работы. Проблема критериев и норм воспитанности. Оценка уровня воспитанности. В педагогической литературе под эффективностью воспитательной работы понимается ее действенность, результативность, способность обеспечить дос...
5955. PR and the Media. A collaborative relationship? 125.19 KB
  В современном обществе скорость жизни, словно по спирали, увеличивается с каждым днем и ценность своевременной и оперативной информации возрастает вместе с ней. Неудивительно, что СМИ приобретают все большее значение...
5956. Гендерный аспект и его применение в слоганах современной рекламы 119.99 KB
  Введение Название темы данной работы: Гендерный аспект и его применение в слоганах современной рекламы. Термину Гендер в российской науке всего семнадцать лет, а разумное и целесообразное использование рекламы, а значит и слоганов, началос...
5957. Проектирование внутреннего водопровода и канализации жилого здания 87.5 KB
  Внутренний водопровод - это система трубопроводов и устройств, обеспечивающая подачу холодной воды к санитарно-техническим приборам и пожарным кранам, обслуживающая одно здание (в данном курсовом проекте) и имеющее общее водоизмерител...
5958. Договоры банковского вклада (депозита) и банковского счета 115.4 KB
  Одним из важнейших правовых институтов белорусского гражданского законодательства является правовой институт, регулирующий правоотношения в сфере договора банковского вклада банковского счета. Стабилизация белорусской экономики позволила ба...
5959. Политика финансовой стабилизации в РФ. Государственный долг РФ 14.37 KB
  Политика финансовой стабилизации в РФ. Государственный долг РФ. Предполагает обеспечение сохранности рыночного механизма и условий его нормальной работы. Это достигается путём осуществления комплекса мер по борьбе с монополизацией, инфляцией и безра...
5960. Форми організації виховного процесу 72.16 KB
  Форми організації виховного процесу Загальна характеристика форм виховання та їх класифікація Аналіз педагогічної літератури і практики свідчить, що молоді вчителі найбільше труднощів зустрічають в організації виховної роботи...
5961. Форма воспитательной работы по Титовой Е.В и Б.В. Куприянову 141.5 KB
  Фотма воспитательной работы по Титовой Е.В и Б.В. Куприянову. Классификация форм воспитательной работы Вопрос классификации форм воспитательной работы является отнюдь не новым. Определенные основы решения этого вопроса заложены Е.В. Титовой в работе...