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>

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


 

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

67578. Коммутативные группы с конечным числом образующих. Следствия из классификации 278 KB
  Теорема о подгруппах группы Всякая подгруппа группы изоморфна причем . Мы знаем что подгруппа G группыимеет не более чем n образующих и потому для нее можно записать первое каноническое разложение: где mk n. Теорема о подгруппах конечной коммутативной группы.
67579. Множества с двумя алгебраическими операциями. Кольца и поля 192.5 KB
  Множество с двумя алгебраическими операциями R называется кольцом если R абелева группа аддитивная группа кольца R. Элементы такого кольца R имеющие обратные относительно операции умножения называются обратимыми а их множество обозначается через...
67580. Кольцо многочленов над полем 139.5 KB
  Кольцо многочленов над полем в отличие от случая многочленов над кольцом обладает рядом специфических свойств близких к свойствам кольца целых чисел Z. Делимость многочленов. Хорошо известный для многочленов над полем R способ деления углом использует только арифметические действия...
67581. Мультипликативная группа поля. Неприводимые многочлены 271.5 KB
  Имеет место фундаментальная теорема Гаусса: Всякий многочлен положительной степени над полем C имеет корень. Из нее вытекает что над полем C неприводимы только многочлены первой степени. Пусть теперь многочлен положительной степени. Следовательно над полем R неприводимыми будут во первых все многочлены...
67582. Характеристика поля; автоморфизм Фробениуса 132.5 KB
  Любое тождество A = B, где A и B целые алгебраические выражения (то есть построенные из переменных с использованием только операций сложения, вычитания и умножения) с целыми коэффициентами может быть перенесено в любое поле k, путем замены каждого целого z Z на соответствующий элемент...
67583. Расширения полей. Присоединение элементов большего поля 212 KB
  Присоединение элементов большего поля. Если k подполе поля K то говорят также что K расширение поля k. Отметим что при расширении сохраняется характеристика поля. По определению расширения большее поле K содержит те же подполя и следовательно имеет ту же характеристику.
67584. Расширения полей. Формальное присоединение элементов 288 KB
  На прошлой лекции было показано что исходное поле k можно расширить добавляя элементы из некоторого большего поля. Оказывается что конструкцию присоединения можно провести изнутри не выходя в большее поле K. Пусть pk(x)неприводимый многочлен над k U его корень в некотором большем поле...