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 (...) запобігає аварійне завершення програми при виявленні необробленої виняткової ситуації.


 

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

52948. London Virtual Tour. The Places of Interest in London 300.5 KB
  T.: The theme of our lesson is “Virtual tour about London”. Today we’ll speak about sightseeing in London. We’ll learn some new facts about London, places of its interest by reading, speaking, listening, watching the presentation of your classmates, where some of you will be guides; we’ll do quiz and tests.
52949. Англійська мова з «Family and Friends» - весело і цікаво! 94 KB
  Як мені здається, ми ще не мали такого підручника, який би так ефективно і ефектно поєднував методику навчання англйської мови її носіїв і методику навчання мови як іноземної. А сам вчитель вперше отримав повне методичне забезпечення: не лише класичний комплект (Class Book, Workbook) та книжку для вчителя, а й повний дедактичний комплект.
52950. Being a Personality 281 KB
  Good morning pupils! I’m glad to see you at our lesson. I want to announce that we are going to speak about family relations today. I want you to accumulate a better vision of the subject that seems to be so trivial at first sight. Really, what can be said about a family? But we are to remember that it is a very complicated phenomenon. It’s worth investigating and that is what we are going to do today.
52951. My family and friends 28 KB
  A to repeat and to actualize lexics on the given topic, to prove grammar material (Past Simple Tense),to learn to put general and special question and answer them B to develop communicative and reading skills, to practice in speaking C to develop ability to form your own point of view D to bring up politeness in intercourse
52952. Famous People of the World. William Shakespeare 30 KB
  T: Look at the blackboard. You can see a portrait of a famous man. Do you know who he is? P: He is W. Shakespeare. T: You are right. Today we will speak about one of the famous people of the world- William Shakespeare, his life and work, his role in English literature. I hope you’ll learn many interesting things about this poet.
52953. Life of a Society. Famous people of the USA 48.5 KB
  Today we start learning a new theme “Life of a Society. Famous people of the USA”. While learning this theme you’ll extend your imagination about some famous people of the USA, there deeds, inventions, interests. You’ll learn how there deeds and ideas have changed life of a society, and have made and still are making history. You’ll extend your vocabulary and broaden your world outlook, practise skills of making simple projects. And I hope, you’ll enjoy English.
52955. Чарівні фарби 52.5 KB
  Яка одноманітна похмура і незвична картина виходить Виявляється дуже багато в нашому житті означає колір Маки червоні. Будьякий предмет має свій колір. Через колір ми пізнаємо природу що нас оточує. Що ж таке колір Яка його природа Чому одні предмети сині інші – червоні а треті – зелені Щоб відповісти на це запитання відгадайте загадку: Що у світі най світліше Наймиліше найтепліше Все від нього навкруги Набирається снаги.
52956. Їжа. Фрукти та овочі 37.5 KB
  Розглянь малюнки і скажи, яку піцу любить Джулія, а яку Мері.T: What does Julia like on her pizza? P: She like tomatoes, cheese, sausage and a cucumber on her pizza. T: What does Mary like on her pizza? P: She like meat, eggs, onion, mushrooms, tomatoes and some oil on her pizza. Згадування слів usually, never. Гра “Find the difference”.s n pple Wht colour is this fruit It’s red. T: Wht does Juli like on her pizz P: She like tomtoes cheese susge nd cucumber on her pizz. T: Wht does Mry like on her pizz P: She like met eggs onion mushrooms tomtoes nd some oil on her pizz. T: Wht is yellow in your picture P: Bnns lemons nd oil.