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


 

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

82776. Лаймен Френк Баум. Чарівник Країни Оз 118.5 KB
  Організаційна частина Добрий день друзі Слайд В ефірі дитяча телепередача У світі веселих пригод та дивовижних мандрівок з казковими героями. Анонс нашої передачі: Слайд Отже ми будемо працювати у різних рубриках. Слайд Ми її проведемо у вигляді інтервю.
82777. Растения. Деревья, кусты, травянистые растения 37 KB
  Цель: продолжить ознакомление учащихся с разнообразием растений формированием понятий дерево-куст травянистые растения; учить детей сравнивать обобщать и делать выводы; воспитывать любовь к природе. Сегодня мы поговорим о растениях об их группах научимся сравнивать обобщать и делать выводы.
82778. Вода в природі. Властивості води. Як берегти воду? 438 KB
  Мета: дати учням уявлення про властивості води (прозора, рідка, без кольору, без запаху, розчиняє деякі предмети), про зміни стану води (твердий рідкий, газоподібний); акцентувати увагу дітей на значення води для рослин, тварин, людини; розвивати активне пізнавальне ставлення до природи...
82779. Здоровий спосіб життя 52.5 KB
  Ознайомити учнів із визначенням понять здоровя здоровий спосіб життя; Формувати вміння висувати аргументувати та захищати свої ідеї; Вчити учнів протидіяти шкідливим звичкам контролювати свою поведінку Розвивати увагу фантазію учнів уміння спостерігати порівнювати...
82780. Число 10. Записывание числа 10 двумя цифрами. Повторение изученного материала 340 KB
  Цели: Ознакомить с образованием числа 10 записью числа 10 двумя цифрами; учить сравнивать числа вычислять выражения на сложение в пределах 9 закреплять знания состава числа 9; развивать логическое мышление воспитывать желание учиться учить математику.
82781. Жанровые разновидности и особенности музыки моего народа. Песенные жанры 2.63 MB
  Цель: научить различать особенности песенного жанра; ориентировать учащихся на духовное развитие средствами музыкального искусства; активизировать музыкальное мышление; формировать способности к разным видам музыкальной творческой деятельности и к овладению элементарных практических умений и навыков.
82782. Прикметник як частина мови. Прикметники-синоніми. Прикметники-антоніми. Пряме та переносне значення прикметників 60 KB
  Мета: закріпити в учнів поняття про прикметник як частину мови, про його роль в мовленні; збагачувати мовлення учнів прикметниками із синонімічними та антонімічними значеннями; вчити вживати їх у прямому та переносному значенні; виховувати любов до рідної мови та бажання вивчати її.
82783. Повторення і закріплення вивченого про іменник 94.5 KB
  Поле чудес дзиґа конверти із завданнями символи для оцінювання грамота таблиці на дошку. На змодельованому Полі чудес лежать конверти із завданнями біля позначених номерівдзиґа для визначення завдань. Діти по черзі вибиратимуть завдання для команд виконувати будуть всі разом відповідати...
82784. Знаходження значень виразів на сумісні дії першого ступеня. Задачі з буквеними даними 287 KB
  Мета: Закріплювати вміння учнів виконувати дії додавання і віднімання над багатоцифровими числами. Формувати обчислювальні навички, потребу в навчанні. Навчати узагальнених прийомів розв’язування задач. Ознайомити учнів з навчальним закладами і професіями.