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


 

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

30804. Способы укладки Б-смеси. Требования при укладке Б-смеси в конструкции с уплотнением 16.62 KB
  Способы укладки Бсмеси. Требования при укладке Бсмеси в конструкции с уплотнением. Основные требования к укладке бетонной смеси: Ограничение высоты падения бетонной смеси плиты до 1м колонны 5 м остальное 2м Послойная укладка с уплотнением каждого слоя; Для обеспечен. Задача процесса уплотнения бетонной смеси состоит в предельной упаковке различных по форме и величине частиц составляющих многокомпонентный конгломерат бетонной смеси.
30805. Уплотнение бетонной смеси вибрированием. Типы вибраторов. Признаки достаточности 16.61 KB
  По способу воздействия на уплотняемую бетонную смесь различают вибраторы глубинные поверхностные и наружные прикрепляемые тисками к опалубке Глубинные вибраторы выполняют с электро или пневмодвигателем встроенным в наконечник вибробулава с электродвигателем вынесенным к ручке и с вынесенным к ручке двигателем и гибким валом. При бетонировании мало и средне армированных конструкций применяют глубинные вибраторы с встроенным в корпус вибровозбудителем вибробулавы диаметром 76 114 и 133 мм с частотой от 5700 до 11000 мин....
30806. Устройство рабочих швов 13.91 KB
  В изгибаемых конструкциях рабочие швы располагают в местах с наименьшим влиянием на прочность конструкции. В колоннах швы устраивают на уровне верха фундамента у низа прогонов балок или подкрановых консолей; в колоннах безбалочных перекрытий у низа или верха вута в рамах между стойкой и ригелем. При подготовке к очередному бетонированию швы обрабатывают через 8.
30807. Уход за бетоном в процессе твердения. Распалубливание конструкций 16.32 KB
  Открытую поверхность бетона прежде всего предохраняют от вредного воздействия прямых солнечных лучей ветра и дождя. Если поверхность бетона предварительно была укрыта влагоемкими материалами брезентом матами песком и др. В жарком сухом климате если не обеспечить благоприятных температурновлажностных условий твердения прочность бетона снижается на 15. В начальный период ухода за бетоном не следует обильной поливкой сразу после укладки нарушать структуру твердеющего бетона.
30808. Бетонирование массивов и фундаментов 14.03 KB
  В фундаменты и массивы в зависимости от объема заглубления высоты и других особенностей бетонную смесь укладывают по следующим технологическим схемам: с разгрузкой смеси из транспортного прибора непосредственно в опалубку с передвижного моста или эстакады с помощью вибропитателей и виброжелобов бетоноукладчиков бетононасосов бадьями с помощью кранов. В ступенчатые фундаменты с общей высотой до 3 м и площадью нижней ступени до 6 м2 смесь подают через верхний край опалубки предусматривая меры против смещения анкерных болтов и закладных...
30809. Бетонирование полов 15.33 KB
  Для осуществления процесса укладки плиты разбивают на карты. Если толщина плит меньше 05 м то разбивку на карты и укладку бетона ведут в таком порядке: Площадь делят на картыполосы по 34м Устанавливают по краям полос маячные доски. При большей толщине плиты разбивают на параллельные карты шириной 5. Карты бетонируют подряд т.
30810. Сетевые и локальные СУБД 12.74 KB
  Существенной проблемой СУБД такого типа является синхронизация копий данных именно поэтому для решения задач требующих совместной работы нескольких пользователей локальные СУБД фактически не используются. К сетевым относятся файлсерверные клиентсерверные и распределенные СУБД. В файлсерверных СУБД все данные обычно размещаются в одном или нескольких каталогах достаточно мощной машины специально выделенной для этих целей и постоянно подключенной к сети.
30811. Процес нормализации баз данных 16.04 KB
  Например задано следующее отношение: ПРЕДМЕТ Код предмета. Переведем атрибут с повторяющимися значениями в новую сущность назначим ей первичный ключ Код преподавателя и свяжем с исходной сущностью ссылкой на ее первичный ключ Код предмета. В результате получим две сущности причем во вторую сущность добавятся характеризующие ее атрибуты: ПРЕДМЕТ Код предмета. Название Цикл Объем часов; ПРЕПОДАВАТЕЛЬ Код преподавателя ФИО Должность Оклад Адрес Код предмета.
30812. ПОТОКИ И ПРОЦЕССЫ 13.25 KB
  Процесс обеспечивает программу всем что ей нужно для работы включая один поток. Этот стандартный поток основной поток используется для выполнения кода программы. Основной поток типичного процесса начинает работу с точки входа и продолжает выполняться в соответствии со всеми циклами условными операторами и вызовами функций. Основной поток завершается вместе с завершением процесса.