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


 

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

38121. Морально-психологічний вплив на війська в ході наступальних і оборонних дій 135.5 KB
  Мета заняття: ознайомити курсантів із психологічною стійкістю колективу в бою; надати курсантам знання щодо стану страху та шляхів його подолання. Обговорення другого питання: Стан страху шляхи його подолання 40 хв. Мета заняття: ознайомити курсантів із психологічною стійкістю колективу в бою; надати курсантам знання щодо стану страху та шляхів його подолання. Основна частина 80 Психологічна стійкість колективу в бою 40 Стан страху шляхи його подолання 40 3.
38122. Військове виховання 136.5 KB
  Виховання – це процес планомірного і цілеспрямованого впливу на свідомість, почуття і волю воїнів з метою формування у них наукового світогляду, навичок і звичок поведінки у відповідності до вимог моралі, підготовки їх до виконання військового обов’язку.
38123. Навчання у військах як військово-дидактичний процес 153.5 KB
  Військовопедагогічні процеси Заняття № 12: Навчання у військах як військоводидактичний процес Час: 2 години Мета заняття: 1. Обговорення першого питання: Форми організації навчання 30 хв. Обговорення другого питання: Методи навчання 30 хв. Обговорення третього питання: Контроль та оцінка військового навчання.
38125. Психологія спілкування у військовому колективі 154 KB
  Військовий підрозділ як мала соціальна група Заняття № 18: Психологія спілкування у військовому колективі Час: 2 години Мета заняття: 1. Обговорення першого питання: Комунікативний компонент спілкування 30 хв. Відповідають на запитання Приймають участь у дискусії Обговорення другого питання: Інтерактивний компонент спілкування 30 хв....
38127. Кондиционеры. Типы кондиционеров 158 KB
  Современное понятие «кондиционер» (air conditioner, от англ. air — воздух и condition — состояние) как обозначение устройства для поддержания заданной температуры в помещении, существует достаточно давно. Интересно, что впервые слово кондиционер было произнесено вслух ещё в 1815 году.