69719

Обробка несподіваних виключень

Лекция

Информатика, кибернетика и программирование

У програмі оголошені функції badnews, solver і main. Прототип функції solver перераховує виключення, що генеруються в цій функції. Проте ця функція генерує несподіване виключення, коли викликає функцію badnews.

Украинкский

2014-10-09

27.5 KB

0 чел.

Тема 9: Обробка несподіваних виключень

Обробка виключень може бути "хитрою" справою. Скільки б ви не планували обробок виключень, ви можете все ж таки зіткнутися з несподіваними виключеннями. Використання оператора catch (...) - ось один із способів обробки таких виключень. C++ пропонує ще один спосіб. У заголовному файлі Ехсерт.Н оголошені функції unexpected і set_unexpected. За умовчанням виконуюча система викликає функцію unexpected, якщо оператор catch(...) не використовувався після блоку try. За допомогою функції set_unexpected можна замінити стандартну функцію unexpected вашою власною функцією. Щоб використовувати функцію set_unexpected, викличте її і передайте їй ім'я вашої власної функції як єдиний аргумент.

Розглянемо приклад програмування, який ілюструє, як і коли використовувати функцію set_unexpected, щоб встановити вашу власну пастку - програму реакції на особливу ситуацію виключення. У лістингу 16.5 показаний початковий текст програми Error5.CPP, яка ілюструє обробку несподіваного виключення. У програмі оголошені функції badnews, solver і main. Прототип функції solver перераховує виключення, що генеруються в цій функції. Проте ця функція генерує несподіване виключення, коли викликає функцію badnews.

Представимо виведення програми в лістингу 16.5.

Hand I i ng unexpected exception!

Лістинг 16.5

Початковий текст програми ERRORS. CPP

// Програма ілюструє

// обробку несподіваних виключень

#include <iostream.h>

#include <except.h>

#include <stdlib.h>

// оголосити скелетні класи виключень

class mainerror {};

class secerror {};

class Kaboom {};

void badnewsq 

{

throw Kaboom();

}

void solver(int ncode) throw(mainerror, secerror)

{

if (ncode > 0) throw mainerror();

else if (ncode < 0) throw secerror();

badnewsq();

}

void myunexpectedo {

cout « "Handling unexpected except ion!\n";

exrt(1); // вихід з кодом помилки 1 }

ma i n() {

set_unexpected(myunexpected);

// генеруємо виключення

try {

solver(O);

}

catch (mainerror)

{ cout « "HANDI ing main exception\n";

}

catch (secerror)

{ cout « "Handl ing secondary exception\n";

}

return 0;

}

Лістинг 16.5 включає заголовні файли IOSTREAM.H, Ехсерт.Н (вони потрібні для того, щоб використовувати функцію set_unexpected) і STDLIB.H (він необхідний для того, щоб використовувати функцію exit). У лістингу 16.5 оголошені скелетні класи виключень mainerror, secerror і Kaboom, а потім декларують функції badnews, solver, myunexpected і main.


 

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

77305. Анализ подходов к отладке параллельных вычислений 19 KB
  Фактически единственным способом является поочередное подсвечивание строчек создающее иллюзию выполнения программы перед глазами пользователя. Выполнение программы отождествляется с ее исходным текстом вообще говоря статическим. Попытки же напрямую исследовать динамику выявляют огромную сложность рассмотрения реальной программы и в основном ограничиваются небольшими фрагментами кода. Кроме того выполнение программы как последовательность операторов довольно плохо поддается визуализации.
77307. ФЕНОМЕН «ПРИСУТСТВИЯ» В ВИРТУАЛЬНОЙ РЕАЛЬНОСТИ В КОНТЕКСТЕ ИНТЕЛЛЕКТУАЛЬНОЙ ДЕЯТЕЛЬНОСТИ ЧЕЛОВЕКА 32.5 KB
  В статье рассматриваются вопросы применения технологии виртуальной реальности в образовании. Приводится определяющее термин виртуальная реальность понятие «присутствия» и показывается его влияние на интеллектуальную деятельность, что представляет большое значение для образовательного процесса с использованием сред виртуальной реальности.
77308. Psychological Aspects of Virtual Environment Use 33.5 KB
  Phenomen of presence nd immersion in to virtul environments re subject of psychology studies t the sme time they re extremely importnt from positions of computer visuliztion. Keywords: Presence virtul relity visuliztion. INTRODUCTION The presence phenomenon ws described s perceptionl illusion of immedicy or otherwise ldquo;sense of being thererdquo; ignoring the computer s intermediry between person nd the world it intercts with. The sme wy one cn describe involvement phenomenon tht s well s immersion is defined s component of...
77309. СОВРЕМЕННЫЕ ТЕНДЕНЦИИ В РАЗРАБОТКЕ СРЕДСТВ ВИЗУАЛИЗАЦИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ 33 KB
  Схема функционирования разрабатываемых в последние годы систем отладки примерно следующая в ходе вычислений собираются данные о работе процессов которые являются входными при построении того или иного вида отображения например графов вызовов или графов потоков данных. Однако все эти приемы скорее носят характер паллиативов изза возникающих проблем с реализацией как самого процесса вывода данных так и с интерфейсом удобным для программиста. В этой связи можно рассмотреть методику и среду распределенного и параллельного...
77310. ИССЛЕДОВАНИЕ ПОЛЬЗОВАТЕЛЕЙ СРЕДЫ ВИРТУАЛЬНОЙ РЕАЛЬНОСТИ 29.5 KB
  В этой связи можно рассмотреть историю развития средств интерактивной машинной графики предназначенных для обеспечения интерпретации данных и отметить увеличение ldquo;плотностиrdquo; при передаче информации от порядка тысячи элементарных векторов на экране до генерации в реальном времени практически полноценных фотореалистичных фильмов. Это состояние характеризуется как ощущение пребывания в ldquo;другом миреrdquo; в отличие от обычного для компьютерной графики...
77311. Психологические феномены виртуальной реальности 29 KB
  Ниже даются определения основных состояний переживаемых в виртуальной реальности показана их связь и взаимодействие что представляется важным как для дальнейших исследований так и для разработки систем компьютерной визуализации использующих среды виртуальной реальности. Среды виртуальной реальности являются развитием симуляторов и тренажеров созданных еще в 60ые и 70ые годы XX столетия для летчиков и космонавтов. Одновременно с феноменом присутствия описывается феномен погружения как явление когда органы чувств пользователя...
77312. MODERN TENDENCIES IN THE DEVELOPMENT OF VISUALIZATION TOOLS FOR PARALLEL COMPUTING SOFTWARE 25 KB
  Urosov s fr s one cn see it is nturlly to use visuliztion tools both for needs of prllel progrmming nd presenttion of redymde prllel softwre. In the mid 90s of the 20th century mny systems for softwre visuliztion of prllel computing hve been developed. Judging by our observtions lst yers the intensity of development in the field of Softwre Visuliztion declined considerbly.
77313. СИСТЕМНЫЕ И ВИЗУАЛИЗАЦИОННЫЕ ПРЕДПОСЫЛКИ СОЗДАНИЯ ВИРТУАЛЬНОГО ИСПЫТАТЕЛЬНОГО СТЕНДА 84.5 KB
  Важную роль в большинстве этих системах играют средства визуализации связанные со сложной вычислительной моделью. Причем система визуализации служит в тоже время и средством управления численным экспериментом. Успех компьютерного эксперимента во многом зависит от средств визуализации которые могут использовать технологии виртуальной реальности как в ldquo;чистомrdquo; виде так и в варианте ldquo;расширеннойrdquo; ugumented реальности. Известная схема получения результата в области численного компьютерного моделирования...