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;

}


 

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

18147. Способы компенсации дрейфа ВОД 2.6 MB
  Лекция 14. Способы компенсации дрейфа ВОД. ВОД для измерения механических величин Недостатком ВОД является дрейф нуля. Известны следующие способы компенсации дрейфа нуля: преобразование переменного тока в постоянный рис.14.1 а. При этом переменная сост
18148. Датчики для измерения электрических величин 2.22 MB
  Лекция 15. Датчики для измерения электрических величин. ВОД с волокном в качестве чувствительного элемента Датчик магнитного поля на основе эффекта Фарадея Схема датчика магнитного поля на основе эффекта Фарадея показана на рис.15.1. Рис.15.1. Схема датчика магнитн...
18149. Волоконный гироскоп. ВОД ионизирующих излучений 246.61 KB
  Лекция 16. Волоконный гироскоп. ВОД ионизирующих излучений. ВОД с волоконными жгутами передающими излучение Волоконный гироскоп Волоконный гироскоп основан на эффекте Саньяка. Он обладает рядом достоинств по сравнению с обычным гироскопом а именно: просто
18150. Основные характеристики диэлектрических световодов для интегральной оптики 358.04 KB
  Лекция 17. Основные характеристики диэлектрических световодов для интегральной оптики. Схемонесущие материалы в интегральной оптике Интегральная оптика ИО это оптика тонких пленок технология изготовления элементов ИО схожа с технологией изготовления элементо
18151. Классификация интегрально-оптических элементов и схем 1.23 MB
  Лекция 18. Классификация интегральнооптических элементов и схем Все интегральнооптические элементы ИОЭ разбиты на 3 класса: структурные элементы; интегральнооптические схемы первого уровня интеграции; интегральнооптические схемы второго уровня интег...
18152. Интегральные оптические схемы (ИОС) первого уровня интеграции 220.84 KB
  Лекция 19. Интегральные оптические схемы ИОС первого уровня интеграции К этому классу относятся ИОС способные выполнять оптические магнитооптические электрооптические и некоторые другие функции. Конструктивно ИОС состоят из нескольких структурных элементов.
18153. Интегральные оптические системы (ИОС) второго уровня интеграции 290.6 KB
  Лекция 20. Интегральные оптические системы ИОС второго уровня интеграции Такие схемы являются совокупностью двух или более ИОС первого уровня интеграции. Они как правило представляют собой трехмерное волноводное оптическое образование в единой оптической монолит
18154. Подготовка световодных систем к контролю 187.22 KB
  Лекция 21. Подготовка световодных систем к контролю. Контроль геометрических параметров. В световодных системах необходимо контролировать следующие параметры: геометрические параметры: средний диаметр оболочки и сердцевины световода; некоаксиальность...
18155. Метод контроля затухания и широкополосности 97.85 KB
  Лекция 22. Метод контроля затухания и широкополосности. Контроль затуханий осуществляется с использованием следующих методов: двухточечного; замещения; обратного релеевского рассеяния во временной области. Двухточечный метод реализуется по следующ...