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>

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


 

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

72661. Побудительное наклонение в японском, русском и английском языках: сходство и различия при переводе на русский и английский 208 KB
  Целью исследования является проведение анализа переводов произведения А.П. Чехова «Вишневый Сад» на английский и японский языки с точки зрения способов передачи в них побудительного наклонения, сопоставление особенностей этих переводов с языком оригинала, а также выявление сходств и различий побудительного...
72662. Обобщенную структурная схема системы связи для передачи непрерывных сообщений дискретными сигналами 4.64 MB
  Изобразить обобщенную структурную схему системы связи для передачи непрерывных сообщений дискретными сигналами привести подробное описание назначения входящих в нее блоков. Преобразование сообщения и сигналов в системе связи проиллюстрировать качественно приведением временных и спектральных диаграмм...
72664. ρ-метод факторизации Полларда на примере 32-битовых целых чисел 289.58 KB
  Цель работы – рассмотреть основные методы факторизации больших чисел; программная реализация ρ-метода факторизации Полларда; реализация генерации простых чисел; тестирование ускорения ρ-метода факторизации Полларда.
72665. Статистико-экономический анализ себестоимости подсолнечника на примере ЗАО «имени Ленина» и других хозяйств Аннинского, Богучарского и Павловского районов Воронежской области 173.73 KB
  Актуальность темы курсовой работы обусловлена тем, что для получения максимальной прибыли при минимальных затратах, на предприятии необходимо проводить более точный и тщательный анализ системы учёта издержек по видам затрат и состава себестоимости.
72668. Многоэтажное промышленное здание с неполным каркасом 595.33 KB
  Ребристую предварительно напряженную плиту армируют стержневой арматурой класса А-VI с механическим натяжением на упоры форм. К трещиностойкости плиты предъявляют требования III - ей категории. Изделие подвергают тепловой обработке при атмосферном давлении.