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;

}


 

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

34287. Онтогене́з 31 KB
  Постэмбриональное развитие Постэмбриональное развитие бывает прямым и непрямым. Прямое развитие развитие при котором появившийся организм идентичен по строению взрослому организму но имеет меньшие размеры и не обладает половой зрелостью. Дальнейшее развитие связано с увеличением размеров и приобретением половой зрелости.
34289. Старение 16.82 KB
  Опыты показывали что вытяжка из семенников молодого организма повышала тонус у старого. источник – толстая кишечник – в нём гнилостные процессы азотистый обмен самого организма. биологические часы 1вилочковая железа прекращает работу при переходе организма в зрелый возраст 2нервная система гипоталамус симпатическая нервная система Долгожители – старше 90 лет; долгожительство характеризует определенные этнические группы проживающие в основном в сельской местности. Биологический смысл старения заключается в том что оно делает...
34290. Регенерация 16.32 KB
  Виды: физиологическая – восстановление органов тканей клеток после разрушения их в процессе жизнедеятельности организма непрерывное восстановление структур на клеточном тканевом и внутриклеточном уровнях; благодаря физиологической регенерации поддерживается структурный гомеостаз и обеспечивается возможность постоянного выполнения органами их функций; самообновление пролиферативная регенерация вид физиологической; восполнение численности клеток за счет их деления – обновление производных эпидермиса – волосы ногти. ...
34291. Гомеостаз 15.84 KB
  Иммунитет – невосприимчивость организма к инфекциям и инвазиям чужеродных организмов. Иммунитет: специфический носит индивидуальный характер и формируется на протяжении всей жизни человека в результате контакта его иммунной системы с различными микробами и антигенами; специфич. сохраняет память о перенесенной инфекции и препятствует ее повторному возникновению; неспецифический носит видоспецифический характер обеспечивает борьбу с инфекцией на ранних этапах ее развития когда специфический иммунитет еще не сформировался. Также...
34292. Аномалия 16.16 KB
  Пороки развития – аномалии развития совокупность отклонений от нормального строения организма возникающих в процессе внутриутробного или реже послеродового развития. По этиологическому признаку пороки делят на: наследственные пороки возникшие в результате мутаций гамет реже зиготы; в зависимости от того на каком уровне произошла мутация делятся на генные и хромосомные; экзогенные пороки обусловленные повреждением тератогенными факторами эмбриона или плода – лекарственные препараты вирусы промышленные яды алкоголь табачный...
34293. Оплодотворение 27 KB
  Начало оплодотворения момент слияния мембран сперматозоида и яйцеклетки окончание оплодотворения момент объединения материала мужского и женского пронуклеусов. III стадия проникновение самый активный сперматозоид проникает головкой в яйцеклетку сразу после этого в цитоплазме яйцеклетки образуется оболочка оплодотворения которая препятствует полиспермии. Условия необходимые для оплодотворения: концентрация сперматозоидов в эякуляте не менее 60 млн в 1 мл; проходимость женских половых путей;...
34294. Особенности человека как объекта генетических исследований 778.5 KB
  Вопервых у человека не может быть произведено искусственного направленного скрещивания в интересах исследователя. Наконец изучение генетики человека затрудняется наличием в его геноме большого числа групп сцепления генов 23 у женщин и 24 у мужчин а также высокой степенью фенотипического полиморфизма связанного с влиянием среды. Все перечисленные особенности человека делают невозможным применение для изучения его наследственности и изменчивости классического гибридологического метода генетического анализа с помощью которого были открыты...
34295. Охрана природных экосистем. Формы природоохранной деятельности. Правовые основы охраны природы. Значение охраны природы для здоровья человека 14.43 KB
  Правовые основы охраны природы. Значение охраны природы для здоровья человека. Охрана природных экосистем – совокупность мероприятий направленных на поддержание природы планеты в состоянии соответствующем эволюционному уровню биосферы её живого вещества а также человека. Национальный парк Памятник природы Красная книга Правовые основы охраны природы.