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


 

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

81630. Светолечение (фототерапия). Светолечение в ветеринарии 25.84 KB
  При некоторых физиологический состояниях например лактации яйцекладке продуктивным животным требуются сильные световые раздражители при других например откорме затемнение Действие инфракрасных лучей основано на тепловом эффекте который реализуется прямым или рефлекторным путем.
81631. Закріплення правила про вимову і правопис слів з ненаголошеними голосними 38 KB
  Мета. Закріпити правило про вимову і правопис слів з ненаголошеними голосними. Формувати уміння перевіряти правопис слів з ненаголошеними голосними. Розвивати орфографічні уміння та навички, фонематичний слух, мислення та звʼязне мовлення.
81632. Узагальнення вивченого матеріалу по темі «Іменник» 62 KB
  Мета: Узагальнити вивчений матеріал про іменник; закріпити навички розбору іменника як частини мови. Розвивати усне і писемне мовлення учнів, творчу уяву. иховувати дружні стосунки у колективі. Тип уроку: урок закріплення знань, умінь і навичок.
81633. Види текстів за метою мовлення. Складання усного опису калини. Складання текстів за поданим зачином і кінцівкою 355.5 KB
  Виховувати: бережливе ставлення до калини як лікарської рослини оберегу символу України Обладнання: підручники мультимедійна презентація картки калина вишиванки коровай Тип уроку: комбінований Хід уроку I. Так діти це калина. А Карлсон буде у вас вчитися 1 ряд скласти прислів’я зі словосполучень...
81634. Подорож у країну імен та прізвищ. (Велика буква в іменах, прізвищах та по-батькові людей) 115 KB
  Мета: формувати в дітей уміння розрізняти поняття «ім’я», «по батькові», «прізвище», учити правильно писати власні іменники, ознайомити з етимологією деяких із них, розвивати дослідницький інтерес, спостережливість, творчість, фантазію, уміння працювати з підручником самостійно, у парах, аналізувати...
81635. Написання суфіксів -ськ-, -зьк-, -цьк- в прикметниках 51 KB
  Задачі: Формування комунікативної автономізаційної компетентностей: виробляти в учнів вміння і навички вживання суфіксів –ськ цьк зьк. Сьогодні на уроці ми будемо вчитися правильно вживати та записувати у словах суфікси ськ зьк цьк. З м’яким знаком зьк цьк ськ написать не забувай.
81636. Бабусенько ріднесенька 190.5 KB
  Мета: сприяти розвитку навичок виразного читання,слухання та комунікативних умінь; розвивати мовлення, творчу фантазію, збагачувати словниковий запас, уміння висловлювати думку; підкреслити важливу роль бабусі у житті кожної людини, допомогти відчути цінність зв’язку між поколіннями та дитиною...
81637. У гостях у дієслів майбутнього часу. Дієслова майбутнього часу. Змінювання дієслів майбутнього часу за особами і числами 49.5 KB
  Мета: закріпити знання учнів про часові форми дієслів; навчитись утворювати просту і складену форми дієслів майбутнього часу; змінювати дієслова майбутнього часу за особами та числами; вчити працювати творчо; висловлювати свої думки; виховувати любов до рідної матусеньки.
81638. Іменник (узагальнюючий урок) 40 KB
  Мета: узагальнити знання учнів про граматичні ознаки іменника, розвивати вміння робити висновки та узагальнювати вміння аналізувати, розвивати творчі вміння аналізувати, розвивати творчі здібності, усне і писемне мовлення, виховувати старанність, любов до мови.