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>

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


 

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

71523. Хозяйственное и трудовое право 669 KB
  Одним из основных условий успешного построения гражданского общества с рыночной экономикой является наличие у руководителей и специалистов глубоких знаний в области хозяйственного и трудового права и умение использовать их в хозяйственной практике..
71524. Лекции по курсу Истории Отечества 313 KB
  Угрофинские, финские, прибалтийские и балтийские народы, чуваши жили на территории современной России. Через территорию России проходили скифы, авары, унгры, булгары, хазары, сарматы. Были и остготы, создавшие первые государственные образования. Прародиной славян считается часть Польши...
71525. История науки и техники 140 KB
  Афины стали главным ремесленным центром Средиземноморья однако у греческих предпринимателей не хватало рабочей силы тогда они стали покупать рабов. В греческих судах каждый должен был защищать себя сам; на этих процессах истцы и ответчики изощрялись в ораторском искусстве...
71527. АНАЛИЗ КАПИТАЛА ХОЗЯЙСТВУБЩЕГО СУБЪЕКТА 312.5 KB
  Учетный аспект анализа собственного капитала предполагает оценку первоначального вложения капитала и его последующих изменений связанных с дополнительными вложениями полученной чистой прибылью накопленной с момента функционирования предприятия и другими причинами вследствие которых...
71528. История отечественного и зарубежного театра 399.5 KB
  Каждый вечер гостеприимно раскрываются двери театра и сотни зрителей приходят на радостную встречу с музыкой с прекрасным искусством оперы и балета. В сезоны же летних путешествий на залитой солнцем театральной площади в любое время дня вы можете увидеть автобусы Интуриста...
71529. Основные периоды истории математики 272.5 KB
  Периодизация истории математики часто проводится по странам общественноэкономическим формациям наиболее выдающимся открытиям. Колмогоровым периодизации основанной на оценке содержания математики: ее важнейших идей методов и результатов.
71530. Детали машин общего машиностроения 50 KB
  Задачей курса является научить студента конструировать и рассчитывать детали машин с учётом реальнодействующих сил собирать из этих деталей механизмы и машины. Всякая машина состоит из сборочных единицы и деталей. Всякий механизм состоит из соединительных деталей и соединений.
71531. История педагогики: Курс лекций 1.2 MB
  Цели воспитания он связывал с формированием человека-патриота главными качествами которого должны быть высокая нравственность любовь к науке знаниям трудолюбие бескорыстное служение Родине. Зарождение воспитания школы и педагогической мысли...