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;

}


 

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

39983. Закон Мура в применении к СКС 47.01 KB
  Gigbit Ethernet возник в ответ на потребность во все больших и больших скоростях передачи данных. Gigbit Ethernet является дальнейшим развитием стандартов Ethernet и Fst Ethernet которые уже хорошо зарекомендовали себя за почти двадцатилетнюю историю. Он быстрее в первого из них в 100 и второго в 10 раз соответственно а теоретическая пропускная способность gigbit Ethernet достигает 1000 Мбит сек что приблизительно равно 120 МБайтам в секунду то есть вплотную приближается к скорости 32битной шины PCI 33 МГц. Технология обладает обратной...
39984. Кластер (группа компьютеров) 74.59 KB
  Обычно различают следующие основные виды кластеров: отказоустойчивые кластеры Highvilbility clusters H кластеры высокой доступности кластеры с балансировкой нагрузки Lod blncing clusters вычислительные кластеры High perfomnce computing clusters Гридвычисления Содержание 1 Классификация кластеров 1.1 Кластеры высокой доступности 1.2 Кластеры распределения нагрузки 1.3 Вычислительные кластеры 1.
39985. Функции шифрования пароля в Unix и Windows 24.56 KB
  Поле пароль x будет содержать либо реальный зашифрованный пароль либо его обозначение как в данном примере. При регистрации в системе UNIX программа getty требует ввести имя пользователя и запускает программу входа в систему а та в свою очередь запрашивает пароль но не декодирует его. Фактически программа bin login шифрует пароль введенный пользователем а затем сравнивает полученное значение с тем которое хранится в etc psswd. Если данные совпадают то пароль был введен правильно.
39986. Социальная инженерия 33.33 KB
  Социальная инженерия Социальная инженерия это метод несанкционированного доступа к информации или системам хранения информации без использования технических средств. Основной целью социальных инженеров как и других хакеров и взломщиков является получение доступа к защищенным системам с целью кражи информации паролей данных о кредитных картах и т. для получения нужной информации. Целью фишинга является незаконное получение конфиденциальной информации.
39987. Межсетевые экраны и их роль в построении защищенных систем 230.34 KB
  Типичные возможности фильтрация доступа к заведомо незащищенным службам; препятствование получению закрытой информации из защищенной подсети а также внедрению в защищенную подсеть ложных данных с помощью уязвимых служб; контроль доступа к узлам сети; может регистрировать все попытки доступа как извне так и из внутренней сети что позволяет вести учёт использования доступа в Интернет отдельными узлами сети; регламентирование порядка доступа к сети; уведомление о подозрительной деятельности попытках зондирования или атаки на узлы сети или сам...
39988. Переполнение буфера 240.81 KB
  Условия для переполнения буфера параметры функций передаются через стек; адрес возврата также помещается в стек; локальные переменные располагаются в стеке; стек растет вниз; данные в стеке могут интерпретироваться как команды; должны существовать процессы или программы имеющие уязвимый код; некоторые процессы или функции должны иметь высокие привилегии. Переполнение буфера Переполнение буфера Buffer Overflow явление возникающее когда компьютерная программа записывает данные за пределами выделенного в памяти буфера....
39989. Безопасность приложений WWW 47.13 KB
  Технические особенности Существенное преимущество построения Web приложений для поддержки стандартных функций браузера заключается в том что функции должны выполняться независимо от операционной системы данного клиента. Классификация угроз безопасности Webприложений Данная классификация представляет собой совместную попытку членов международного консорциума собрать воедино и упорядочить угрозы безопасности Webсайтов. Члены Web ppliction Security Consortiumсоздали данный проект для унификации стандартной терминологии описания угроз...
39990. Автоматизированные информационные системы 959.15 KB
  Автоматизированные информационные системы для студентов специальности Автоматизированные системы обработки информации и управления дневной формы обучения.. Понятие автоматизированной информационной системы. Структура автоматизированной информационной системы. Понятие и виды моделей информационной системы.
39991. Предмет, содержание, методы и задачи информационного менеджмента и маркетинга 99.5 KB
  Широкая информатизация всех сфер жизнедеятельности общества принципиально изменяет роль информации и информационных технологий в социальном и экономическом развитии страны. В таких условиях особое значение приобретают проблемы подготовки квалифицированных специалистов в области менеджмента и маркетинговой деятельности способных работать в условиях развитой информатизации насыщения производства и непроизводственной сферы всевозрастающими потоками информации и управления ими. В бизнесе управлении и маркетинге как ни в какой другой сфере...