69721

Обмеження виняткових ситуацій

Лекция

Информатика, кибернетика и программирование

Обмеження виняткових ситуацій Програміст може обмежити типи виняткових ситуацій які може генерувати функція в інших місцях програми. Фактично можна взагалі заборонити функції генерувати які б то не було виняткові ситуації.

Украинкский

2014-10-09

29.5 KB

0 чел.

Тема 11. Обмеження виняткових ситуацій

Програміст може обмежити типи виняткових ситуацій, які може генерувати функція в інших місцях програми. Фактично можна взагалі заборонити функції генерувати які б то не було виняткові ситуації. Для цього слід додати у визначення функції розділ throw.

тіп_возвращаємого_значенія імя_функциі (спісок_аргументов)   throw (спісок_тіпов)

{

//...

}

Хто визначення функції означає, що вона може генерувати лише виняткові ситуації, перераховані в списку типів. Спроба згенерувати виняткову ситуацію будь-якого іншого типу приводить до аварійного завершення програми. Якщо необхідно заборонити функції взагалі генерувати будь-які виняткові ситуації, список типів слід залишити порожнім.

Спроба згенерувати виняткову ситуацію, не підтримувану функцією, супроводжується викликом стандартної функції unexpected(). Потім по мовчанню викликається функція abort (), і програма завершується аварійно. Проте для непередбаченої виняткової ситуації можна передбачити власний обробник.

Наступна програма демонструє обмеження на типи виняткових ситуацій, які можуть генеруватися функцією.

// Обмеження   типів  виняткових  ситуацій

// що генеруються  функцією.

#include  <iostream>

using namespace  std;

// Дана  функція може  генерувати  лише  виняткові

// ситуації,   що мають   типи  int,   char  і  double

void Xhandler(int  test)   throw(int,   char,   double)

{

if(test==0)   throw  test;   

//   Генерується  об'єкт   типу   int 

if(test==l)   throw   'a';   

//   Генерується  об'єкт   типу  char 

if(test==2)   throw  123.23;   

//   Генерується  об'єкт   типу  double

}

int main ()

{

cout  <<   "Начало\n";

try  

{

Xhandler(0); // Спробуйте також передати функції

// Xhandler() числа 1 і 2

}

catch(int i)

{

cout « "Перехоплення цілого числа\ п";

}

catch(char з)

{

cout << "Перехоплення строки\ п";

}

catch(double d)

{

cout « "Перехоплення дійсного числа\ п";

}

cout << "Кінець";

return 0;

}

У цій програмі функція xhandler Про може генерувати лише виняткові ситуації, що мають типи int, char і double. При спробі згенерувати виняткову ситуацію будь-якого іншого типу програма завершується аварійна (Інакше кажучи, викликається функція unexpected ().) Щоб побачити, як це відбувається, видалите із списку типів специфікатор int і повторите компіляцію програма

Важливо чітко розуміти, що обмеження розповсюджуються лише на типи виняткових ситуацій, які функція може генерувати в блоці try. Інакше кажучи, блоки try, функції, що знаходяться усередині, можуть генерувати будь-які виключи тільні ситуації. Таким чином, обмеження розповсюджуються лише на виключи тільні ситуації, функції, що генеруються зовні.

У наступному прикладі функція xhandler(). не може генерувати ніяких виняткових ситуацій.

//  Дана  функція не може  генерувати  ніяких

//  виняткових  ситуацій!

void Xhandler(int  test)   throw()

{

/* Наступні оператори більше не виконуються.

Вони приводять до аварійного завершення програми. */

if(test==0) throw test;

if(test==l) throw 'a';

if(test==2) throw 123.23;

}


 

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

10837. Найважливіші винаходи людства. Телефон 47 KB
  Урок 22 Тема: Наука і культура Підтема: Найважливіші винаходи людства. Телефон. Мета: Практикувати учнів у читанні науковопопулярного тексту пошуковому читанні. Систематизувати граматичний матеріал щодо способів вираження майбутнього часу в англійській мові. Об
10838. Винаходи та винахідники. Перевірити рівень мовленнєвої компетенції за темою 74.5 KB
  Тема: Наука і культура Підтема: Винаходи та винахідники. Мета: Перевірити рівень мовленнєвої компетенції за темою. Провести тематичну атестацію. Обладнання: тест НО1. ХІД УРОКУ І. ПІДГОТОВКА ДО СПРИЙНЯТТЯ ІНШОМОВНОГО МОВЛЕННЯ Aim Повідомлення теми та мети уро...
10839. Мистецтво. Життя суспільства 52.5 KB
  УРОК 24 Тема: Життя суспільства Підтема: Мистецтво. Мета: Розвивати вміння вживати лексику теми в усних висловлюваннях. Проконтролювати розуміння та обговорити текст домашнього читання. Практикувати учнів у вживанні розділових питань у порівнянні з іншими питаннями...
10840. Відвідання музею 58 KB
  УРОК 25 Тема: Життя суспільства Підтема: Відвідання музею. Мета: Практикувати учнів у діалогічному мовленні. Вчити свідомому логічному оформленню висловлювання. Узагальнити у вправах граматичний матеріал Present Tenses. Обладнання: підручник таблиця Present Tenses HO1. ПІ...
10841. Шедеври живопису 51 KB
  УРОК 26 Тема: Життя суспільства Підтема: Шедеври живопису. Мета: Практикувати учнів в аудіюванні тексту. Сприяти розвиткові пізнавальних інтересів учнів розширенню їхнього світогляду формуванню смаку. Обладнання: підручник репродукція Mona Lisa Giaconda HO1 текст дл...
10842. Корисна інформація для подорожуючого 54 KB
  УРОК 27 Тема: Життя суспільства Підтема: Корисна інформація для подорожуючого. Мета: Практикувати учнів в усних діалогічних висловлюваннях. Вчити отримувати та користуватися необхідною для подорожуючого інформацією. Вчити реагувати на репліки співрозмовника висл...
10843. Урок. У готелі. Займенник some та його похідні 51.5 KB
  Тема. Життя суспільства УРОК 28 Підтема: У готелі. Мета: Практикувати учнів у вживанні фраз необхідних у ситуаціях спілкування. Узагальнити граматичний матеріал: Займенник some та його похідні. Обладнання: підручник граматична таблиця Займенник some та його похід...
10844. Новий рік. Різдво 44.5 KB
  Тема: КУЛЬТУРА. ДОЗВІЛЛЯ Підтема: Новий рік. Різдво. Мета: Виховувати повагу до народних традицій. Обладнання: підручник текст для аудіювання Christmas in Ukraine HO текст для читання New Year in England and Scotland HO2. ХІД УРОКУ I.ПІДГОТОВКА ДО СПРИЙНЯТТЯ ІНШОМОВНОГО МОВЛЕННЯ ...
10845. Чекаючи на Різдво. Життя суспільства 38.5 KB
  Урок 29 Тема: Життя суспільства Підтема: Чекаючи на Різдво. Мета: Навчати непідготовленому висловлюванню за темою уроку. Проконтролювати та обговорити тексти домашнього читання. Націлювати учнів на виконання тесту тематичної атестації.Обладнання: підручник. ХІД У...