Программирование >>  Расширенная версия языка c++ 

1 ... 109 110 111 [ 112 ] 113 114 115 ... 227


На экран программа выводит следующее:

начало

Перехвачена ошибка номер: i

Перехвачена ошибка номер: 2 f;-

Перехвачена ошибка номер: 3 конец

Как видите, обработаны три исключительные ситуации. После вызова каждой исключительной ситуации функция возвращает свое значение. При повторном вызове функции обработчик исключительной ситуации устанавливается вновь.

5. Как упоминалось ранее, с блоком try можно связать более одной инструкции catch. Как правило, так и делается. При этом каждая инструкция catch пред-

Перехвачена ошибка номер: 1 - .... ,) ...

конец Vr-X-l-

4. Бло tay можно располагать внутри функции. В этом случае при каждом входе в функцию обработчик исключительной ситуации устанавливается снова.

Например, рассмотрим следующую программу:

finclude <iostream>

using namespace std;

Блоки try и catch могут находиться не только в функции main ( ) void Xhandler (int test)

try f .

if (test) throw test;

}

catch (int i) {

couo перехвачена ошибка : i \n ;

int main ()

cout качало\п ;

Xhandler(1) Xhandler (2) Xhandler(0) Xhandler (3)

cout конец

return 0;



назначена для перехвата своего типа исключительной ситуации. Например, в следующей программе перехватываются две исключительных ситуации, одна для целых и одна для строки:

#inciude <iostream> using namespace std;

Можно перехватывать разные тины исключительных ситуаций

void Xhandler(int test} 1

( .1

try { r: - ,

if (test) throw test; . i:;

else throw Значение равно нулю ; J ........... ,..

catch (ini) {

cout < Перехвачена опшбка номер: i \n;

catch(char *str) (

cout Перехвачена строка: . ( i

cou str \n;

int main () {

cout началоХп ; .

Xhandler(l); Xhandler(2); Xhandler(O); XhandlerO) ;

cout конец ;

return 0;

1 - >К-й -

На экран программа выводит следующее: начало

Пе рехвачена ошибка номер: 1 Перехвачена ошибка номер: 2

Перехвачена ока: Значение равно нулю

Перехвачена ошибка номер: 3

конец

Как видите, каждая инструкция catch перехватывает только исключительные ситуации соответствующего ей типа.

Обычно выражения инструкций catch проверяются в том порядке, в котором они появляются в программе. Выполняется только та инструкция, которая



совпадает по типу данных с исключительной ситуацией. Все остальные блоки catch игнорируются.


1. Лучший способ нять, как функционирует система обработки исключительных ситуаций в C++ - это поработать с ней. Введите, откомпилируйте и запустите предыдущие примеры программ. Затем поэкспериментируйте с ними, меняя фрагменты и исследуя результаты.

2. Что неправильно в данном фрагменте? int main ()

throw 12.23;

3. Что неправильно в данном фрагменте?

try {

throw а ; ...

catch (char *) {

... ..

4. Что может произойти при возбуждении исключительной ситуации, для кото

рой не задано соответствующей инструкции catch?

11.4. Дополнительная информация

об обработке исключительных ситуаций

В системе обработки исключительных ситуаций имеется несколько нительных аспектов и нюансов, которые могут сделать ее понятнее и удобней для применения.

В некоторых случаях необходимо настроить систему так, чтобы перехватывать все исьспючительные ситуации, независимо от их типа. Сделать это достаточно просто. Для этого используйте следующую форму инструкции catch:

catc . .) { - .,-1 . .

абогжа всех яск/аспиГвттхк ситуаций



1 ... 109 110 111 [ 112 ] 113 114 115 ... 227

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика