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


 

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

53349. Берегиня вроди – хустка 219 KB
  Впродовж століть хустка була на Україні найдорожчим подарунком який уособлював для кожної людини рідну Україну рідний дім рідну матір. Де ж вона сьогодні щира українська хустка що її серед тисячі інших вирізняє щось невимовно рідне Де весела та барвиста хустка щедро оспівана в народних піснях та іграх Хочеться щоб вона сьогодні стала не просто модною деталлю на деякий час а одним з національних символівоберегів. І учениця: Українська хустка з давніхдавен – це основний і улюблений головний убір української молодиці.
53351. ХВИЛИНКИ КАЛІГРАФІЇ НА УРОКАХ УКРАЇНСЬКОЇ МОВИ 62 KB
  Поясніть правопис слова весна. Що означає слово купава Чи є тут слова вжиті в переносному значенні Опишіть образ весни яку ви побачили. Чи зрозуміли ви про що йдеться у вірші Знайдіть слова з ненаголошеними голосними. Назвіть слова правопис яких слід перевірити за словником.
53352. Різноманітність хвойних рослин. Значення в природі та житті людини 68.5 KB
  Мета: Продовжити формувати наукову картину живої природи на прикладі різноманітності хвойних. Ознайомити учнів із різноманітними представниками класу Хвойних особливостями їх поширення. Сприяти формуванню в учнів наукового світогляду на основі знань про різноманітність хвойних.
53353. Різноманітність та значення хвойних рослин 36 KB
  Тема уроку: Різноманітність та значення хвойних рослин. Тип уроку: комбінований Форма уроку: ділова гра Обладнання і матеріали: таблиці фотоілюстрації і малюнки що ілюструють різноманітність і значення голонасінних гербарій шишки і живі гілочки представників хвойних рослин динамічна схема Розмноження сосни картини викладені бурштином картки для опитування довідки учнів рекомендована література. Особливості будови і значення хвойних ми вивчимо сьогодні а зараз згадаємо Питання для бесіди: Які ознаки характерні для...
53354. Я ЛЮБЛЮ УКРАЇНУ! 317.5 KB
  Ми живемо в Україні, в краю, невимовно багатому на чарівні кольори і краєвиди, на дивовижні пісні, на чудову милозвучну мову, якою можна передати все на світі, описати красу і велич рідного краю. Рідною українською мовою можна висловити найпотаємніші почуття і думи, мрії кожної людини.
53355. Использование схем в документах XML 691 KB
  Схема XML, как и сам документ XML, представляет собой текстовый файл, который можно создавать и корректировать с помощью любого текстового редактора. Проверка правильности созданной схемы и проверку действительности созданного с учетом схемы документа XML проводится с помощью специализированных программных продуктов (например, программы XMLSpy).