69717

Стандартні виключення

Лекция

Информатика, кибернетика и программирование

Всі конструктори і методи мають специфікацію, що забороняє генерацію виключень. Функція-метод what() видає рядок-повідомлення про помилку. Передбачається, що виключення типу logicerror сигналізують про помилки в логіці програми, наприклад про невиконання деякої умови.

Украинкский

2014-10-09

27.5 KB

0 чел.

Тема 7: Стандартні виключення

У мові C++ у складі стандартної бібліотеки реалізований ряд стандартних виключень, які організовані в ієрархію класів.

Лістинг 4.1. Ієрархія стандартних виключень

class exception {// ... };

class logic_error : public exception {// ... };

class domain_error : public logic_error {// ...  };

class invalid_argument : public logic__error {// ... };

class length_error : public logic^error {//  ...  }:

class out_of__range : public logic_error {//... }; class runtime_error : public exception {//... };

class range_error : public runtime_error {// ... };

class overflow_error : public runtime_error {

class underflow_error : public runtime_error {// ...  }; class bad_alloc : public exception {// ... }; class bad_cast : public exception {// ... }; class bad_tipeid : public exception {// ... }; class bad_exception : public exception {// ... ): class ios_base::failure : public exception {// ... .};

Ця ієрархія служить основою для створення власних виключень і ієрархій виключень. Ми маємо право визначати свої власні виключення, успадкувавши їх від класу exception.

Клас exception визначений в стандартній бібліотеці таким чином:

class exception {

public:

exception () throw();

exception (const exceptions) throw();

exceptions operator= (const exceptions) throw();

virtual -exception () throw();

virtual const char* what () const throw();

}:

Всі конструктори і методи мають специфікацію, що забороняє генерацію виключень. Функція-метод what() видає рядок-повідомлення про помилку. Передбачається, що виключення типу logicerror сигналізують про помилки в логіці програми, наприклад про невиконання деякої умови. Категорія runtimeerror - це помилки, які виникають в результаті непередбачених обставин при виконанні програми, як, скажімо, переповнювання при операціях з дробовими числами. Такі виключення програма повинна порушувати самостійно оператором throw.

П'ять стандартних виключень породжують різні механізми C++. Ці виключення теж можна використовувати в операторові throw явним чином, проте

робити це не рекомендується. Виключення badalloc генерує операція new (або new[]), якщо запит на пам'ять не може бути задоволений. Виключення badcast і badtypeid збуджуються механізмом RTTI (Run-time Type Identification - динамічна ідентифікація типів). Системою введення/виводу генерується ios_base:: fail ярмі. Виключення bad_exception описане раніше. Для роботи із стандартними виключеннями в програмі треба прописати оператора #include <stdexcept>

Оскільки обробка виключень супроводжується накладними витратами часу і пам'яті під час виконання програми, в інтегрованому середовищі необхідно включити відповідний режим, що вирішує обробку виключень (див. додаток В).


 

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

30392. Локальная цивилизация Древнего Шумера: развитие и основные достижения 40.75 KB
  На основе этих технологий шумеры пытаются продолжать вести хозяйство на новых землях и строят системы осушения почвы. Обслуживание ирригационной системы неизбежно привело к распространению рабского труда. Аккат Саргон Основные направления политики Саргона и его династии: создание единой ирригационной системы; поддержание постоянной армии 5400 чел. Ирригационные системы шумеров были сложнее египетских но культурных сооружений они оставили меньше.
30393. Локальная цивилизация Древнего Китая: развитие и основные достижения 35.86 KB
  Появление городской цивилизации Шан 1812 вв. В квазигосударстве Шан зарождалась пиктографическая письменность картинки. Основу культовой практики Шан составляло представление о переселении душ. союз племен Чжоу захватывает государство Шан.
30394. Локальная цивилизация Древней Персии (империя Ахеменидов): развитие и основные достижения 34.36 KB
  Рабы участвовали в экономике имели экономическую свободу так как раба не выгодно было иметь лучше продать больше продукции чем кормить его. Знать освобождается от налогов; региональная элита осуществляет экономическое управление в своей области сатрапии; кастовое общество но все социальные группы получают широкую экономическую самостоятельность; поскольку все социальные группы вовлечены в торговлю во внутреннем рынке они вынуждены пользоваться единой денежной системой и становятся зависимы от центральной власти; восточную деспотию в...
30395. Основные особенности и достижения глобальной античной цивилизации 31.46 KB
  Преобладало мелкое хозяйство крестьян и ремесленников в Римской империи создавались крупные рабовладельческие латифундии ремесленные производства. Возникают мировые империи но они недолговечны и быстро распадаются. Наиболее прочная Римская империи политическое и экономическое верховенство центраметрополии над провинциями устойчивые торговые связи смешение культур.
30396. Локальная цивилизация Древней Греции: развитие и основные достижения 32.34 KB
  Олигархия признак знатности богатство Общее между тремя формами правления коллегиальный принцип принятия решений на основе консенсуса т. демократический принцип правления. Многоотраслевая экономика; переработка с х продукции масло вино; разные формы правления тирания демократия аристократия олигархия; мифологическое сознание; развитие теоретических наук; человек объект культуры гелиоцентризм атомарная теория; всеобщее образование.
30397. Основные достижения и цивилизационное значение империи Александра Македонского 36.08 KB
  Основные достижения и цивилизационное значение империи Александра Македонского На фоне упадка грекоримской и персидской цивилизаций на роль регионального лидера начинает претендовать Македония. Задача создания единой экономической системы империи не ставилась: усилие по созданию единой нации; создание единого культа обожествления Александра Македонского. Создание империи Александра Македонского можно считать не вторым подъемом античной цивилизации а завершением ее первого кризиса. Именно политика Македонского заложила основы т.
30398. Эллинистические государства: основные достижения и цивилизационное значение 44.48 KB
  Самоуправляемые гражданские общины эпохи эллинизма. Сельские общины внутренним самоуправлением народное собрание общественный земельный фонд взносы на нужды общины; земледельцы личносвободные свобода передвижения. Земли храмов стали постепенно раздаваться в аренду членам общины. Поэтому гражданские общины активно поддерживали римскую империю когда та завоевывала ослабевшие эллинистические государства.
30399. Римская республика: основные особенности и достижения 40.7 KB
  Госаппарат: Сенат патриции куриатные коммиции затем всадники и плебеи центуриатные коммиции магистратуры цензор консулы административное военное управление квестор суд казна преторы административное управление суд эдилы муниципальное управление. Культура приобретает прикладной характер который определялся необходимостью контроля и упорядочивания духовной жизни людей; управление духовным миром.
30400. Римская Империя: основные особенности и достижения 32.74 KB
  Постепенная натурализация с х производства внутри одной латифундии укрупнение производства приводит к возможности организации собственного небольшого ремесленного производства что уменьшает зависимость от торговли. Рост технологий позволил развить арендаторство интенсификация производства повышение дохода. Достижения: смешанная экономика с развитой локальной и региональной специализацией что значительно повысило эффективность производства; .