68961

Перехоплення класів виняткових ситуацій

Лекция

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

Виняткова ситуація може мати будь-який тип, зокрема бути об’єктом класу, визначеного користувачем. У практичних застосуваннях виняткові ситуації, визначені користувачем, зустрічаються частіше, ніж вбудовані. Можливо, це відбувається тому, що програмісти прагнуть якомога точніше визначати класи виняткових...

Украинкский

2014-09-28

34.5 KB

0 чел.

Лекція № 23

Тема: Перехоплення класів виняткових ситуацій

План

  1.  Перехоплення класів виняткових ситуацій
  2.  Застосування декількох операторів catch

Перехоплення класів виняткових ситуацій

Виняткова ситуація може мати будь-який тип, зокрема бути об'єктом класу, визначеного користувачем. У практичних застосуваннях виняткові ситуації, визначені користувачем, зустрічаються частіше, ніж вбудовані. Можливо, це відбувається тому, що програмісти прагнуть якомога точніше визначати класи виняткових ситуацій і створювати об'єкти, що описують вірогідні помилки. Ця інформація дозволяє обробникові виправляти виниклі помилки. Проілюструємо сказане наступним прикладом.

// Перехоплення класу виняткових ситуацій.

#include <iostream>

#include <cstring>

using namespace std;

class MyException {

public:

char str_what[80];

int what;

MyException() { *str_what = 0; what =0; }

MyException(char *s, int e) {

strcpy(str_what, s);

what = e; }

};

 

int main() {

int i ;

try {

cout « "Введіть позитивне число: ";

cin >> i;

if (i<0)

throw MyException("Число не позитивне", i);

} catch (MyException e) { // Перехоплення помилки

cout « e.str_what << ": " ;

cout « e.what « "\n";

}

return 0;

}

В результаті на екрані з'являться наступні рядки.

Введіть позитивне число: -4

Число не позитивне: -4

Програма пропонує користувачеві ввести позитивне число. Якщо у відповідь користувач введе негативне число, створюється об'єкт класу MyException, що описує виниклу помилку. Таким чином, клас MyException інкапсулює інформацію про помилку. Потім ця інформація використовується для обробки помилки. Як правило, інкапсуляція інформації про помилку в окремому класі підвищує ефективність обробки виняткових ситуацій.

Застосування декількох операторів catch

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

#include <iostream>

using namespace std;

// Перехоплюються декілька типів виняткових ситуацій.

void Xhandler(int test)

{

try {

if(test) throw test;

else throw "Значення рівне нулю";

} catch(int i){

cout << "Перехоплення виняткової ситуації #: " << i « '\n';

} catch(const char *str) {

cout << "Перехоплення рядка: ";

cout << str << '\n';

}

}

int main() {

cout « "Початок\n";

Xhandler(l);

Xhandler(2);

Xhandler(0);

Xhandler(3);

cout « "Кінець";

return 0;

}

Результати роботи цієї програми приведені нижче.

Почало

Перехоплення виняткової ситуації #: 1

Перехоплення виняткової ситуації #: 2

Перехоплення рядка: Значення рівне нулю.

Перехоплення виняткової ситуації #: 3

Кінець

Як видимий, кожен оператор catch відповідає окремому типу. Як правило, оператори catch перевіряються в порядку їх проходження в програмі. Виконується лише той оператор, тип аргументу якого точно відповідає виниклій винятковій ситуації. Решта всіх блоків catch ігнорується.


 

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

16256. Исследование спектра сигнала кабельной сети 991 KB
  Лабораторная работа №4 Исследование спектра сигнала кабельной сети 1 Цель работы: 1.1 Исследовать спектр сигнала Архангельской телевизионной компании. 1.2 Научиться пользоваться анализатором спектра DL4. 1.3 Научиться пользоваться программным обеспечением S.M.A.R.T. ...
16257. Удосконалення бухгалтерської звітності підприємства 473.5 KB
  Предметом дослідження є сукупність теоретичних, методологічних і організаційно економічних питань з удосконалення бухгалтерської звітності в ППА «Коровинці» Недригайлівського району Сумської області
16258. Исследование структуры и принципа действия конвертора телевизионных сигналов 677 KB
  Лабораторная работа №2 Исследование структуры и принципа действия конвертора телевизионных сигналов 1 Цель работы: 1.1 Изучить структурную схему конвертора СТ07. 1.2 Научиться производить настройку конвертора СТ07. 2 Литература: 2.1 Джакония В.Е. Телевидение. М.: ...
16259. Исследование структуры и принципа работы модулятора телевизионного МТ-07 799 KB
  Лабораторная работа №3 4 часа Исследование структуры и принципа работы модулятора телевизионного МТ07 1 Цель работы: 1.1 Изучить структурную схему модулятора МТ07. 1.2 Научиться производить настройку модулятора МТ07. 2 Литература: 2.1 Джакония В.Е. Телевидение. М.:...
16260. Сеть кабельного телевидения 4.66 MB
  Практическая работа №3 Сеть кабельного телевидения 1 Цель работы: 1.1 Приобрести теоретические и практические навыки по профессии электромонтёр 3 разряда станционного ТВ оборудования. 1.2 Изучить принципы формирования телевизионного радиосигнала познакомиться с ...
16261. Аппаратно-студийный блок 6.88 MB
  Практическая работа №2 Аппаратностудийный блок Цель работы Приобретение практических и теоретических навыков по профессии электромонтер 3 разряда станционного ТВ оборудования. Литература 2.1 Колин К.Т. Телевидение Москва: Радио и...
16262. Телевизионный приемник 3.3 MB
  Практическая работа №4 Телевизионный приемник 1 Цель работы: 1.1 Приобрести теоретические и практические навыки по профессии электромонтёр 3 разряда станционного ТВ оборудования. 1.2 Изучить принципы построения телевизионных приемников. 1.3 Научиться производить...
16263. Измерение структуры и синтаксиса транспортного потока 1.05 MB
  Лабораторная работа №101 Измерение структуры и синтаксиса транспортного потока 1 Цель работы: Ознакомиться с назначением и характеристиками анализатора транспортного потока 10KDSA03. Научиться определять параметры транспортного потока MPEG2. ...
16264. Вектороскоп 491.5 KB
  Лабораторная работа №8. Вектороскоп. 1 Цель работы: 1.1 Изучить параметры телевизионного сигнала системы PAL. 2 Литература: 2.1 Джакония В.Е. Телевидение. М.: Радио и связь 1980. 2.2 Телевизионная техника. Справочник./ Под редакцией Зубарева Ю.Б .и Глориозова Г.Л.М.: Ради...