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;

}


 

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

37470. Новый этап в развитии физики рентгеновских лучей 54.26 KB
  Первое что бросается в глаза это следующее. фантастическое увеличение потока информации и все возрастающая узкая специализация приводят к тому что большинство книг представляет собой сборники а не монографии в прямом смысле этого слова. Из них 28 это сборники обзоров такого же типа что и рецензируемая книга. Разумеется в том что такая книга будет неровной будет содержать повторения.
37471. Классики мировой философии о политику, государстве и праве 26.46 KB
  Противопоставление Гераклитом аристократического права и государства справедливым законам за которые люди должны биться как за стены родного города. Четыре свойства государства: мудрость мужество рассудительность справедливость. Структура государства. Разработал теорию возникновения и существования государства ради достижения благой жизни.
37472. Психологическая защита в социуме 968 KB
  Ключникова посвящена теме психологической защиты человека живущего в бурном потоке современного социума. В ней описываются психологические механизмы и законы защищенности человека помогающие человеку стать защищенным и успешным мастером жизни. Книга богато иллюстрированная историями из обширной консультативной практики автора содержит многочисленные советы приемы и методы вдумчивое применение которых сделает человека значительно более уверенным и успешным.Автор развивает и конкретизирует подход суть которого состоит в разумном сочетании...
37473. Гісторыя Беларусі (у кантэксце сусветнай гісторыі) 8.25 MB
  Мандрык Гісторыя Беларусі у кантэксце сусветнай гісторыі Віцебск 2008 УДК 947. 4 Беи 73 Г 46 Друкуецца па рашэнні навуковаметадычнага савета Віцебскага філіяла Установы адукацыі Федэрацыі прафсаюзаў Беларусі â€œМіжнародны інстытут працоўных і сацыяльных адносінâ€. Гісторыя Беларусі у кантэксце сусветнай гісторыі. 4 Беи 73 Г 46 Віцебскі філіял Установы адукацыі Федэрацыі прафсаюзаў Беларусі â€œМіжнародны інстытут працоўных і сацыяльных адносінâ€.
37475. Проектирование и конструирование талевого блока газовой скважины 1.12 MB
  5 Диаметр отверстия в стволе ротора мм 700 Расчетная мощность привода ротора кВт 370 Мощность бурового насоса кВт 950 Расчетная мощность на валу буровой лебедки кВт 670 Наибольшая оснастка 5x6 Диаметр каната мм 28 Диаметр шкивов наружный мм 1 шкив 1000; 10 шкивов 900 Максимальная подача бурового насоса л с 50.1 Оснастка талевой системы Порядок прохождения талевого каната через канатные шкивы кронблока и талевого блока имеет существенное значение для распределения нагрузки на ноги вышки и для правильной навивки каната на барабан...
37477. Изучить среду Microsoft Visual Studio 6.0. Изучить структуру программы на языке C++ 1.17 MB
  В язык С были добавлены новые возможности: виртуальные функции перегрузка функций и операторов ссылки константы пользовательский контроль над управлением свободной памятью улучшенная проверка типов и новый стиль комментариев . Его новые возможности включали множественное наследование абстрактные классы статические функциичлены функцииконстанты и защищённые члены. Строка под главным меню содержит панель инструментов полезным свойством которой является выпадающий список функций программы с помощью которого можно быстро...
37478. Метод мурашиних колоній 235.5 KB
  Технічне завдання Розробити програму що здійснює пошук оптимального шляху між двома клітинками ігрового поля яке являє собою двовимірну матрицю клітинок заданого розміру. Пошук шляху повинен здійснюватись за допомогою алгоритму мурашиної колонії параметри алгоритму повинні налаштовуватись користувачем вручну. Пізніше список використовується для визначення довжини шляху між вузлами. Справжня мураха під час переміщення по шляху залишає за собою деяку кількість феромону.