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


 

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

30177. Модернизировать координатную ось динамической подвижной лазерной головки. Разработанная координатная ось должна минимизировать общее время обработки 6.29 MB
  В результате выполнения работы была модернизирована координатная ось, для уменьшения перемещения лазерной головки и получены минимальные затраты материала. Областью практического применения разработанной координатной системы станка обеспечивает динамическое перемещение оптической оси лазерного излучения, а также положением фокуса луча над поверхностью раскройного стола с разрешением в тысячные доли миллиметра.
30178. Разработка рекомендаций по совершенствованию аэронавигационного обеспечения полетов авиакомпании "Волга-Днепр" в связи с внедрением европейской схемы торговли квотами на эмиссию парниковых газов 2.22 MB
  Выявлена проблема определения оптимального маршрута с точки зрения учета квот на эмиссию парниковых газов и представлены результаты расчетов эффективности эмиссии и определения оптимального маршрута путем ее сравнения. Методы уменьшения эмиссии парниковых газов 59 4. Повышение спроса на воздушные перевозки привело к увеличению общего объема авиационной эмиссии темпы которого превысили темпы уменьшения удельной эмиссии обеспечиваемой за счет постоянного совершенствования техники и эксплуатационных процедур. Основными компонентами авиационной...
30180. Анализ земляники садовой выращеной на базе плодового питомника ООО «Полисад» в городе Горки Могилевской области 1.13 MB
  Первые крупноплодные сорта земляники появились в 1840 году. Через 20 лет эти сорта были завезены в Казань на ферму земледельческого училища. Растения преимущественно двудомные встречаются сорта с обоеполыми цветками. В диком состоянии этот вид не встречается к нему принадлежат все сорта крупноплодной садовой земляники которые ныне культивируются.
30182. Установление специфики юридической ответственности органов местного самоуправления 428.5 KB
  Ответственность органов местного самоуправления выступает важным элементом их правового статуса гарантией качественной работы и добросовестного осуществления своих полномочий. Предназначение конституционноправовой ответственности заключается в охране конституционного строя основных прав и свобод граждан в обеспечении нормального порядка осуществления публичной власти в следовании органов местного самоуправления предписаниям действующего законодательства в предупреждении превенции посягательств на порядок осуществления...
30183. Повышения эффективности использования строительных машин, увеличение срока их службы и надежности в работе 897.6 KB
  Рост парка машин позволил в значительной степени механизировать труд работников в строительстве. Уровень его механизации достиг 80%. Машинами выполняются почти все основные виды строительно-монтажных работ. В этих условиях своевременность и высокое качество сооружения строительных объектов в большой степени зависят от уровня работоспособности машин. Чем он выше, тем больше гарантий в том, что объекты будут построены в установленные сроки и качественно.
30184. Пропозиції щодо поліпшення співробітництва між Україною та ЄС у виробничому секторі 114.5 KB
  Економічне становище регіону, створення належних умов для життя і праці його населення залежить від розвитку виробничої сфери. Виробнича сфера виступає основою для задоволення людських потреб. Потреби, в свою чергу, відіграють роль стимуляторів діяльності людей.
30185. Разработка системы управления электроприводом листоправильной машины, учитывающий переменность статического момента нагрузки и момента инерции, с целью повышения энергетической эффективности стана11×280×2300 3.84 MB
  передачи от двигателя к валку отн. От первого двигателя 24M1 по ходу металла приводится пять правильных валков три верхних и два нижних находящихся ближе к входу листоправильной машины; от второго двигателя 24M2 остальные шесть валков №6№11. Двигатели предназначены для работы от преобразователей частоты и оснащены каждый датчиком импульсов 24BN1 24BN2 контроль скорости вентилятором обдува с электроприводом двигатели 24M3 24M4 а также датчиками контроля температуры в обмотках KTY 84130 1 шт и подшипниках...