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


 

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

20827. Сравнительная экспертиза качества сыра твердого сычужного «Голландского», реализуемого в магазине «Монетка» 686.5 KB
  Популярность сыров объясняется приятными вкусовыми особенностями, высокой биологической и пищевой ценностью, удачным сочетанием незаменимых аминокислот, высоким содержанием кальция и широкой гаммой микроэлементов, легкой усвояемостью молочного жира.
20828. Анализ ассортимента, качества и конкурентоспособности новых видов колбасных изделий 7.33 MB
  Колбасные изделия, попадающие на наш рынок через мелкие частные предприятия зачастую в обход установленных законом процедур государственного контроля и сертификации, изготовлены из низкосортного сырья с применением различных добавок (наполнителей, консервантов, искусственных красителей).
20829. Анализ изменения экспрессии гена комплексина-2 (Cplx2), вызванных ишемией головного мозга, а также введением регуляторных пептидов семакс и PGP 1.07 MB
  Ключевым механизмом ишемического повреждения является процесс глутамат-кальциевого каскада, когда под влиянием гипоксии усиливаются процессы анаэробного гликолиза, внутриклеточная среда закисляется и нарушается активный ионный транспорт, что приводит к массивному высвобождению возбуждающих аминокислот глутамата и аспартата, в том числе в составе синаптических везикул.
20830. Разработка методики развития силовых качеств школьников с помощью занятий армреслингом 77.46 KB
  Армспорт (борьба на руках или армрестлинг; (от англ. аrm-sport, arm-wrestling, где arm —предплечье) — вид спортивных единоборств. Во время матча одноимённые руки соревнующихся ставятся на твёрдую, ровную поверхность (как правило, стол), и ладони сцепляются в замок.
20831. Влияние света на качество нерафинированного растительного масла 1.09 MB
  Нельзя сбрасывать со счета и другие обстоятельства. Дело в том, что многие малые цеха применяют далеко не совершенную технологию, что, в конечном итоге, ведет к снижению эффективности переработки маслосемян. Необходимо совершенствовать технологические процессы, повышать эффективность каждого малого и среднего предприятия.
20832. Повышение производительности коксовой батареи и повышение качества конечного продукта коксовая батарея № 14 ОАО «ММК» 794.02 KB
  Рассмотрены причины необходимости реконструкции коксовой батареи, различные виды конструкций коксовых печей. Предложено использование многощелевой насадки в качестве нового типа насадки регенератора, за счет чего увеличено количество рядов корнюрной зоны с 9 до 12.
20833. Анализ показателей, характеризующих состояние и использование основных фондов ООО «Инжстрой» 296.38 KB
  Анализ эффективности деятельности организации раскрывает возможные риски, которые могут быть устранены, или проблемы, с которыми можно бороться, или резервы повышения эффективности деятельности в целом, и отдельных показателей в частности. То есть, показывает по каким направлениям следует вести работу.
20834. Автоматизация процесса абонентского учета и биллинга с помощью единой информационной системы на примере ОАО «Челябэнергосбыт» 4.04 MB
  В дипломном проекте был проведён анализ внешней и внутренней среды ОАО «Челябэнергосбыт», проанализирована бизнес - архитектура и ИТ-архитектура предприятия, были выявлены и проранжированы существующие проблемы компании. Был проанализирован рынок информационных продуктов для решения выявленных проблем.
20835. Методи проектування (метод комбінування). Планування роботи з проектування та виготовлення виробу 158.5 KB
  Разработка сайтов для компаний является актуальной и востребованной сферой деятельности, т.к. сайт фирмы в сети Интернет представляет собой достаточно дешевый и массовый способ рекламы, дает возможность потенциальным и существующим клиентам легко получать информацию о товарах и услугах компании, ее деловых интересах.