Блоки try и except

Блоки try и except

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

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

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

• Интенсивное использование указателей, повышающее вероятность попыток разыменования указателей, инициализация которых не была выполнена должным образом.

• Интенсивное использование данных в виде массивов, что может сопровождаться выходом значений индексов элементов массива за границы допустимого диапазона.

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

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

Если при изучении примеров, приведенных в этой главе или книге в целом, вы решите отслеживать исключения, которые могут возникать на том или ином участке программы, создайте для него блоки try и except, как показано ниже:

__try {

 /* Блок контролируемого кода */

} __ except(выражение_фильтра) {

 /* Блок обработки исключений */

}

Имейте в виду, что __try и __except — это ключевые слова, распознаваемые компилятором.

Блоки try являются частью обычного кода приложения. Если на данном участке кода возникает исключение, ОС передает управление обработчику исключений, который представляет собой блок программного кода, следующий за ключевым словом_ except. Характер последующих действий определяется значением параметра выражение_фильтра.

Обратите внимание, что исключение может возникнуть также в пределах блока, находящегося внутри try-блока; в этом случае средства поддержки времени исполнения "разворачивают" стек, чтобы отыскать в нем информацию об обработчике исключений, после чего передают управление этому обработчику. То же самое происходит и в тех случаях, когда исключения возникают внутри функций, вызванных в пределах try-блока.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Глава 31. Блоки

Из книги Секреты сканирования на ПК автора Леонтьев Б К

Глава 31. Блоки Типы блоков в OCR — системе ABBYY FineReaderБлоки — это заключенные в рамку участки изображения. Программой блоки выделяются для того с тем, чтобы указать OCR-системе, какие участки отсканированной страницы необходимо распознавать и в каком порядке. Кроме того по ним


Компоновочные блоки .NET

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Компоновочные блоки .NET Независимо от того, какой язык .NET вы выберете для программирования, вы должны понимать, что хотя бинарные .NET-единицы имеют такие же расширения файлов, как COM-серверы и неуправляемые программы Win32 (*.dll или *.exe), их внутреннее устройство совершенно иное.


Блоки программного кода

Из книги Delphi. Учимся на примерах автора Парижский Сергей Михайлович

Блоки программного кода Два и более операторов присваивания, а также вызовов процедур или функций можно выделять в блоки программного кода при помощи ключевых слов begin и end. Такие блоки используются в конструкции with-do, а также в рассматриваемых ниже циклических


Блоки питания для компьютеров

Из книги Asterisk™: будущее телефонии Второе издание автора Меггелен Джим Ван

Блоки питания для компьютеров Выбранный для системы блок питания будет играть жизненно важную роль в стабильности всей платформы. Asterisk не является особенно энергоемким приложением, но все, что связано с мультимедийными системами (будь то телефония, профессиональная


Блоки try и except

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Блоки try и except Все начинается с выяснения того, в каких именно блоках программного кода вы намерены контролировать возникновение нестандартных ситуаций, после чего этим блокам должны быть предоставлены обработчики исключений в соответствии с приведенным ниже


Блоки и строки окружения

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

Блоки и строки окружения Схема, представленная на рис. 6.1, включает блок окружения процесса. Блок окружения (environment block) процесса содержит последовательность строк вида:Имя = ЗначениеКаждая строка окружения (environment string), будучи символьной строкой, заканчивается нулевым


Блоки

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов автора Дронов Владимир

Блоки JavaScript позволяет нам объединить несколько выражений в одно. Такое выражение называется блочным выражением или просто блоком. Составляющие его выражения заключают в фигурные скобки, например:{b = "12";c = a — b;}Как правило, блоки не существуют сами по себе. Чаще всего они


Блоки

Из книги Самоучитель работы на Macintosh автора Скрылина Софья

Блоки JavaScript позволяет нам объединить несколько выражений в одно. Такое выражение называется блочным выражением или просто блоком. Составляющие его выражения заключают в фигурные скобки, например:{b = "12";c = a — b;}Как правило, блоки не существуют сами по себе. Чаще всего они


5.1.12. Текстовые блоки

Из книги Macromedia Flash Professional 8. Графика и анимация автора Дронов В. А.

5.1.12. Текстовые блоки Pages предлагает вводить текст не только в текстовый слой на странице, но позволяет размещать его в прямоугольные блоки, которые могут быть размещены в произвольном месте страницы.С текстовым блоком, как с объектом, можно производить все


Блоки

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Блоки ActionScript позволяет нам объединить несколько выражений в одно. Такое выражение называется блочным выражением или просто блоком. Для выделения блочного выражения составляющие его выражения заключаются в фигурные скобки, например: { b = "12"; с = а — b; } Как правило, блоки


Блоки BEGIN ... END

Из книги Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript автора Розенцвейг Гэри

Блоки BEGIN ... END PSQL является структурированным языком. После объявления переменных процедурные операторы заключаются в операторные скобки BEGIN и END. В процессе разработки логики процедуры могут быть добавлены другие блоки; любой блок может включать другой блок, заключенный


Бита и блоки

Из книги Все секреты Minecraft автора Миллер Меган

Бита и блоки Исходный файл: Paddlebricks.fla Следующая игра намного сложнее двух предыдущих, хотя в ней используются те же основные элементы: мяч, бита и стены. Это классическая игра изначально называлась "Breakout" [14] .На рис. 11.4 показан фрагмент игры. В дополнение к мячу и бите вверху


Рекурсивные блоки

Из книги автора

Рекурсивные блоки Исходный файл: Blocks.fla Я встречал эту игру в разных вариациях под разными названиями. Основная идея ее в том, что экран заполнен большой решеткой, состоящей из цветных блоков. Игрок может нажать на блок, чтобы удалить его из решетки. Но чтобы удаление блока


19.2.7. Конструкторы и функциональные try-блоки

Из книги автора

19.2.7. Конструкторы и функциональные try-блоки Можно объявить функцию так, что все ее тело будет заключено в try-блок. Такие try-блоки называются функциональными. (Мы упоминали их в разделе 11.2.) Например:int main() {try {// тело функции main()}catch ( pushOnFull ) {// ...}catch ( popOnEmpty ) {// ...}Функциональный


Блоки энергии

Из книги автора

Блоки энергии Большинство твердых непрозрачных блоков вроде булыжника могут быть преобразованы в блоки энергии. Они не передают энергию блокам, расположенным рядом с ними, но могут активировать находящееся рядом устройство. Так происходит, когда вы нажимаете кнопку