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;

}


 

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

65981. МЕЖДУНАРОДНЫЙ ВАЛЮТНЫЙ ФОНД И РОССИЙСКАЯ ФЕДЕРАЦИЯ 84 KB
  Сущность и функции международного валютного фонда Международный валютный фонд МВФ это специализированное учреждение ООН со штаб-квартирой в Вашингтоне США. Основа МВФ была заложена на Бреттон Вудской конференции ООН по валютно-финансовым вопросам 22 июля 1944 года.
65982. Организация экономического сотрудничества 56 KB
  Руководящим органом ОЭСР является совет представителей стран членов организации. В 1960е состав и географические рамки ОЭСР расширились и сейчас в организацию входят 34 государства в том числе большинство государств членов ЕС. На долю государств-членов ОЭСР приходится около 60 мирового ВВП.
65983. Группа Всемирного Банка 21.13 KB
  Условием членства во Всемирном банке является членство в Международном валютном фонде то есть каждая страначлен Международного банка реконструкции и развития должна прежде стать членом Международного валютного фонда.
65984. СТАБИЛИЗАЦИОННЫЙ ФОНД РОССИЙСКОЙ ФЕДЕРАЦИИ 27.53 KB
  Стабилизационный фонд (СФ) — специальный государственный фонд Российской Федерации, создаваемый и используемый в целях стабилизации экономики. Стабилизационный фонд Российской Федерации, основанный 1 января 2004 года, является частью федерального бюджета.
65985. Свободные экономические зоны. Оффшорные зоны 70 KB
  В самой общей форме под СЭЗ следует понимать часть территории страны где государство устанавливает особый режим управления наиболее благоприятный для деятельности иностранных и отечественных предпринимателей для привлечения внешних и внутренних инвестиций.
65986. Государственные инвестиционные программы. Инвестиционные программы Омской области 17.82 KB
  Инвестиции долгосрочные вложения государственного или частного капитала в собственной стране или за рубежом с целью получения дохода в предприятия разных отраслей предпринимательские проекты социально-экономические программы инновационные проекты.
65987. Финансовый рынок РФ анализ за 2009-2011 30.17 KB
  В 2009 году объем торгов на всех рынках РТС вырос на 5,59% по сравнению с 2008 годом и составил 799,3 млрд долларов. По итогам 2009 года рост основного индикатора российского фондового рынка Индекса РТС составил 128,6%, его значение на закрытие торговой сессии 31 декабря 2009 года составило 1 444,61 пункта.
65988. Бюджет Омской области с 2007 - по 2011год 22.22 KB
  Бюджет это совокупность доходов и расходов на определенный период времени обычно на один год. Важным понятие является государственный бюджет. В свою очередь доход бюджета это денежные средства поступающие в безвозмездном и безвозвратном порядке...