68933

Перехоплення всіх виняткових ситуацій

Лекция

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

Обробка виняткових ситуацій в мові C++ володіє додатковими властивостями і нюансами, які полегшують її застосування. Ці особливості описуються нижчим. Перехоплення всіх виняткових ситуацій В деяких випадках немає сенсу обробляти окремі типи виняткових ситуацій...

Украинкский

2014-09-27

32 KB

0 чел.

Лекція № 25

Тема: Перехоплення всіх виняткових ситуацій

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

Перехоплення всіх виняткових ситуацій

В деяких випадках немає сенсу обробляти окремі типи виняткових ситуацій, а необхідно перехоплювати їх всіх підряд. Для цього досить застосувати наступний вид оператора catch.

catch(...)

{

 // Обробка всіх виняткових ситуацій

}

Еліпсис означає, що даний оператор перехоплює всі виняткові ситуації. Його застосування ілюструється наступною програмою.

// В даному прикладі перехоплюються всі виняткові ситуації.

#include <iostream>

using namespace std;

void Xhandler(int test)

{

try {

if(test==0) throw test;

// Генерує об'єкт типу int 

if(test==l) throw 'a';

// Генерує об'єкт типу char 

if(test==2) throw 123.23;

// Генерує об'єкт типу double 

} catch (...) {

// Перехоплення всіх виняткових ситуацій

cout « "Перехоплення!\n";

}

}

int main() {

cout « "Початок\n";

 Xhandler(0) Xhandler(l) Xhandler(2)

 cout « "Кінець" return 0;

}

Результати роботи цієї програми приведені нижче.

Початок

Перехоплення!

Перехоплення!

Перехоплення!

Кінець Як видимий, все три виняткові ситуації, що згенерували операторами throw, перехоплюються одним оператором catch.

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

//В даному прикладі за умовчанням використовується оператор catch (...)

#include <iostream>

using namespace std;

void Xhandler(int test)

{

try {

if(test==0) throw test;

// Генерується об'єкт типу int 

if(test==l) throw 'a1;

// Генерується об'єкт типу char 

if(test==2) throw 123.23;

// Генерується об'єкт типу double

catch(int i){

// Перехоплення виняткової ситуації типу int 

cout << "Перехоплення цілого числа\n";

}

catch(...){

// Перехоплення решти всіх виняткових ситуацій

cout « "Перехоплення!\n";

}

}

int main()

{

cout << "Початок\n";

Xhandler(O); Xhandler(l); Xhandler(2);

cout « "Кінець";

return 0; }

Результати роботи цієї програми представлені нижчим.

 

Початок

Перехоплення цілого числа

Перехоплення!

Перехоплення!

перехоплення!

Кінець

Цей приклад демонструє, що застосування оператора catch (...) — хороший спосіб перехоплювати всі виняткові ситуації, які небажано обробляти явно. Крім того, операторові catch (...) запобігає аварійне завершення програми при виявленні необробленої виняткової ситуації.


 

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

83096. Технология и организация торговли декоративной косметикой 97 KB
  На мой взгляд, тема декоративной косметики всегда будет оставаться актуальной. Это объясняется тем, что сегодня декоративная косметика занимает одну из лидирующих позиций на рынке косметики и естественно, что пользуется спросом у покупательниц всего мира.
83097. Разработка конструкции и технология изготовления компьютерного стола 857.76 KB
  Допускается применять плиты древесностружечные по действующей нормативной документации соответствующие по качеству плитам указанных марок; пленки декоративные на основе термореактивных полимеров с неполной степенью конденсацией смолы по действующей нормативной документации.
83100. Валентин Бичко «Казка — вигадка...». Українська народна казка «Кирило Кожум’яка» 78 KB
  Мета. Розширити знання учнів про українські народні казки; формувати вміння розрізняти героїко-фантастичні казки; вдосконалювати уміння читати в особах; виявляти залежність мовної та інтонаційної характеристики дійових осіб від їхньої ролі у творі; вдосконалювати навички швидкого виразного...
83101. Число и цифра 9. Написание цифры 9. Сравнение чисел в пределах 9. Измерение и сравнение длин отрезков 192 KB
  Цель: закреплять знание учениками названий чисел в пределах 10; продлить работу над формированием у учеников умения сравнивать числа и решать задачи; совершенствовать навыки устного счета, проводить простейшие обобщения, формировать умение определять название деревьев по их листьям.
83102. Розповідне речення. Розділові знаки в кінці розповідного речення 119 KB
  Мета. Дати дітям уявлення про розповідне речення; формувати навички інтонування розповідних речень; розвивати мовлення пам’ять увагу учнів; виховувати любов до природи Обладнання. Таблиця до теми Речення Сніжинки ілюстрації зими індивідуальні картки...
83103. Каїн і Авель (біблійна легенда) 74 KB
  Продовжити знайомство учнів із біблійними легендами. Розкрити зміст біблійної історії про Каїна та Авеля, її глибокі народні витоки.Формувати уміння розрізняти ознаки доброго і лихого, усвідомлювати неминучість кари за вчинене зло. Розвивати читацькі навички та зв’язне мовлення молодших школярів.