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 ігнорується.


 

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

52560. Людина починається з добра. Від усмішки іде до всіх тепло. Музика – нев’януча краса духовної культури усіх народів 74.5 KB
  Що ми можемо сказати Чи потрібні вони у житті людини Чи впливає музика на емоції людини Чи потрібні нам ці теми уроків Епіграф до уроків Бо ти на землі людина І хочеш того чи ні Усмішка твоя єдина Мука твоя єдина Очі твої одні. Дуже важливими є емоції людини які підтримують нас...
52562. Виховний захід для учнів початкової школи “Дорогою добра” 88 KB
  Збагатити знання учнів про чудодійні обереги нашого життя квіти і виховувати глибокі почуття добра і любові до рідного краю свого роду; Розширити знання учнів про звязок людини з природою її вплив на культуру нашого народу. Виходить дівчатка і збирає в кошик квіти які посадили на підлозі. Тому сьогодні ми поговоримо про вічні супутники людського життя і в горі і в радощах квіти. Я землі цієї паросток зелений Я землі цієї крапля дощова Заплелись у мене приросли до мене Жито і дерева квіти і трава.
52563. Поняття добро та зло 66 KB
  У цьому світі є тільки одна річ перед якою належить схилятися це геній і одна річ перед якою слід упасти на коліна це доброта. Одну звати Радість іншу Вдача третю Краса четверту Журба пяту Доброта. Вона задумалася а потім підійшла до дівчини Доброти і простягла їй руку.
52564. Людина починається з добра 76.5 KB
  Жердєва Людина починається з добра розробка виховної години для учнів 7 класу Підготувала учитель української мови та літератури...
52565. Літературно-інтелектуальна гра «Добро завжди перемагає…» 114 KB
  Про це свідчать казки О.Андерсена чудові казкиновели Івана Франка віршовані казки Наталі Забіли Оксани Іваненко. А чи замислювалися ви колинебудь над тим звідки беруться казки Цікаво на це запитання відповів відомий фінський письменник казкар Закаріас Топеліус. Потім на берег моря де на воді граються маленькі кучеряві хвилі з білими баранцями то й є казки.
52566. Спішіть добро творити 45.5 KB
  Виховувати в учнів бажання творити добро бути готовим допомогти будьякій людині у біді здатність боротись проти зла. Тепер врятує світ лиш доброта Бо однієї вже краси занадто мало. Тож люди на Землі Спішіть добро творити Щоб нам не згинути у морі зла Щоб кожен міг серед краси прожити.
52567. Вдячність тому, хто дарує добро 37 KB
  Що ж каже Роман це невелика біда. хіба тобі самому не соромно перед собою Романе Роман усміхнувся. Чи ж обовязково це зробити питає Роман адже ми так потомилися Бо ми люди Якби ми були телята можна було б і не вертатися Вона рушила до хутірця. Роман постояв хвилинку й зітхнувши теж поплівся за гуртом.
52568. Той, що творить добро, творить саме Життя 74 KB
  Мета: вчити учнів користуватися ввічливими мовними формами; закріплювати уявлення про доброзичливість ввічливість; розвивати мовні навички; виховувати громадянську свідомість дбайливе доброзичливе ставлення до оточуючих. Декламування вірша ученицею Все: із доброго чи злого Починається з малого. Слово вчителя Тож сьогодні ми будемо говорити про добро.