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


 

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

79391. Объяснение агрегатных состояний вещества на основе атомно-молекулярных представлений 114.02 KB
  Ещё в четвёртом веке до н.э. было известно, что свойства вещества определяются свойствами его атомов молекул. Прошло двадцать четыре века но информация о структуре вещества полученная за это время не сказалась на основных положениях физики определяющих агрегатное состояние вещества.
79392. Модель строения жидкости. Насыщенные и ненасыщенные пары. Влажность воздуха 97.31 KB
  Основным свойством жидкости отличающим её от других агрегатных состояний является способность неограниченно менять форму под действием касательных механических напряжений даже сколь угодно малых практически сохраняя при этом объём.
79393. Поверхностное натяжение. Смачивание и несмачивание. Капиллярность 167.81 KB
  Наиболее характерным свойством жидкости отличающим ее от газа является то что на границе с газом жидкость образует свободную поверхность наличие которой приводит к возникновению явлений особого рода называемых поверхностными.
79394. Модель строения твёрдых тел. Механические свойства твёрдых тел. Упругость, пластичность, хрупкость. Диаграмма растяжения 26.38 KB
  Причиной этих свойств во многом являются силы связи между молекулами материала. Под твердостью понимают сопротивление материала которое он создает при вдавливании или царапании его поверхности другим телом. Оценка твердости материала проводится с помощью простого испытания на твердость методом царапания.
79395. Кристаллические и аморфные тела. Типы кристаллических решёток. Жидкие кристаллы 177.63 KB
  По своим физическим свойствам и молекулярной структуре твердые тела разделяются на два класса аморфные и кристаллические тела. Молекулы и атомы в изотропных твердых телах располагаются хаотично образуя лишь небольшие локальные группы содержащие несколько частиц ближний порядок.
79396. З чого складається комп’ютер 143.5 KB
  Мета уроку: Познайомити учнів з основними складовими частинами комп’ютера, їх призначенням. Скласти модель комп’ютера. Повторити техніку безпеки при роботі з комп’ютером; Виховувати дбайливе відношення до устаткування кабінету;
79397. Поняття оригамі. Відомості з історії оригамі 813.5 KB
  Мета уроку: Ознайомити із поняттям оригамі, збагатити знаннями про історію його виникнення, ознайомити із видами оригамі та способами його створення, навчити виконувати модульне оригамі. Розвивати увагу, мислення, пам’ять, уяву, точність вимірювань при виконанні модулів, фантазію та креативність.
79398. Вустами немовляти 188 KB
  В цій грі приймає участь весь клас. Вона проходить у вигляді змагань: три групи учасників по 8 чоловік – 4 гри по 2 людини. Гра перевіряє вміння учнів виконувати математичні дії, аналізувати, порівнювати, підмічати закономірності, сприяє прищеплюванню зацікавленню учнів до предмету.