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


 

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

25321. Кора больших полушарий головного мозга 27.5 KB
  Ритмы электроэнцефалограммы. Альфаритм это ритмические колебания потенциала почти синусоидальной формы частотой 8 13 в секунду с амплитудой до 50 мкв. Альфаритм отчетливо выражен если испытуемый человек находится в условиях физического и умственного покоя лежа или сидя в удобном кресле с расслабленной мускулатурой и закрытыми глазами при отсутствии внешних раздражений. Многие исследователи считают что существует две области коры в которых альфаритм имеет наибольшую амплитуду и характеризуется большим постоянством: одна из них...
25322. Физиологическое значение коры больших полушарий 30 KB
  Пирамидные нейроны осуществляют эфферентную функцию коры преимущественно через пирамидный тракт и внутрикорковые процессы взаимодействия между удаленными друг от друга нейронами. Наиболее крупные пирамидные клетки гигантские пирамиды Беца находятся в передней центральной извилине моторной зоне коры. Функциональной единицей коры является вертикальная колонка взаимосвязанных нейронов.
25323. Структурно-функциональные особенности вегетативной НС 31 KB
  Вегетативной нервной системой называют совокупность эфферентных нервных клеток спинного и головного мозга а также клеток особых узлов ганглиев иннервирующих внутренние органы. Эфферентные пути симпатической нервной системы начинаются в грудном и поясничном отделах спинного мозга от нейронов его боковых рогов. Эфферентные пути парасимпатической нервной системы начинаются в головном мозге от некоторых ядер среднего и продолговатого мозга и в спинном мозге от нейронов крестцового отдел а. ФУНКЦИИ СИМПАТИЧЕСКОЙ НС С участием симпатической...
25324. Механизм образования и значение условных рефлексов 37 KB
  запах мяса для слюнного рефлекса и искусственные на посторонние сигналы например запах мяты; 2 наличные и следовые на условный сигнал непосредственно предшествующий безусловному подкреплению и на его следовое влияние; положительные с активным проявлением ответной реакции и отрицательные с ее торможением; 4 условные рефлексы на время при ритмической подаче условных сигналов ответная реакция появляется через заданный интервал даже при отсутствии очередного сигнала; 5 условные рефлексы первого порядка на один предшествующий...
25325. Высшая нервная деятельность 31 KB
  Синтетическая деятельность коры полушарий большого мозга обеспечивает объединение сигналов поступающих от различных анализаторов от органов чувств от функциональных центров нервной системы. Такая синтетическая деятельность мозга человека возможна благодаря многочисленным и разнообразным ассоциативным связям между различными отделами центральной нервной системы. Типы нервной системы Нервные реакции в организме у разных людей отличаются по силе подвижности и уравновешенности. На основании этих трех признаков в первую очередь силы нервных...
25326. Первая и вторая сигнальные системы 44 KB
  И у человека вырабатываются условные рефлексы на различные сигналы внешнего мира или внутреннего состояния организма если только различные раздражения экстеро или интерорецепторов сочетаются с какимилибо раздражениями вызывающими безусловные или условные рефлексы. И у человека при соответствующих условиях возникает внешнее безусловное или внутреннее условное торможение. И у человека наблюдается иррадиация и концентрация возбуждения и торможения индукция динамическая стереотипия и другие характерные проявления условнорефлекторной...
25327. Типы высшей нервной деятельности 36.5 KB
  Современное представление об анализаторах как сложных многоуровневых системах передающих информацию от рецепторов к коре и включающих регулирующие влияния коры на рецепторы и нижележащие центры привело к появлению более общего понятия сенсорные системы. 0036 Рецепторы и их свойства Рецепторами называются специальные образования преобразующие энергию внешнего раздражения в специфическую энергию нервного импульса. Все рецепторы по воспринимаемой среде делятся на экстерорецепторы принимающие раздражения из внешней среды рецепторы органов...
25328. Кожная рецепция 24 KB
  Ее рецепторы представляют собой свободные нервные окончания и сложные образования тельца Мейснера тельца Пачини в которых нервные окончания заключены в специальную капсулу. Это механорецепторы реагирующие на растяжение давление и вибрацию. При температуре кожи 3137С эти рецепторы почти неактивны. Ниже этой границы холодовые рецепторы активизируются пропорционально падению температуры затем их активность падает и совсем прекращается при 12 С.
25329. Интеро- и проприорецепция 30.5 KB
  Все эти рецепторы представляют собой механорецепторы специфическим раздражителем которых является их растяжение. Сухожильные рецепторы оплетают тонкие сухожильные волокна окруженные капсулой. Таким образом в отличие от мышечных веретен сухожильные рецепторы информируют нервные центры о степени напряжения мышц и скорости его развития.