![]() |
|
Программирование >> Расширенная версия языка c++
На экран программа выводит следующее: начало Перехвачена ошибка номер: 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 . . абогжа всех яск/аспиГвттхк ситуаций
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |