1 Проектирование графического интерфейса пользователя______________309

сматривать отчет, изменяя размер изображения, переходить со страницы на стра-
ницу (ваш отчет имеет всего одну страницу, так что переходы в нем невозможны),
проводить установку принтера, печатать отчет, сохранять его в файле, чтобы в ка-
ких-то будущих сеансах можно было загрузить его опять из файла. Словом, воз-
можностей много. Опробуйте их все. А в разделе 9.13 вы научитесь строить более
сложные и интересные отчеты.

4.9 Исключения
4.9.1 Исключения и их стандартная обработка

При работе программы могут возникать различного рода ошибки: переполне-
ние, деление на нуль, попытка открыть несуществующий файл и т.п. При возник-
новении таких исключительных ситуаций программа генерирует так называемое
исключение и выполнение дальнейших вычислений в данном блоке прекращается.
Исключение — это объект специального вида, характеризующий возникшую в
программе исключительную ситуацию. Он может также содержать в виде пара-
метров некоторую уточняющую информацию. Особенностью исключений является
то, что это сугубо временные объекты. Как только они обработаны каким-то обра-
ботчиком, они разрушаются.

Если исключение не перехвачено нигде в программе (как это делать — будет
рассказано в последующих разделах), то оно обрабатывается методом Applicati-
on->HandleException. Он обеспечивает стандартную реакцию программы на боль-
шинство исключений — выдачу пользователю краткой информации в окне сооб-
щений и уничтожение экземпляра исключения. На рис. 4.26 приведены примеры
таких стандартных сообщений для случаев целочисленного деления на нуль, по-
пытки открыть не существующий файл и попытки преобразовать функцией StrTo-
|  Int строку «1.5» в целое число.

Предупреждение •——————————————————————————————————

Если вы работаете в среде разработки C++Builder и отлаживаете свою программу, то при
исключениях, помимо указанных на рис. 4.26 сообщений, могут появляться сообщения от-
ладчика C++Builder, вид которых приведен на рис. 4.27. При этом вы попадаете в окно Ре-
дактора Кода на строку, при выполнении которой произошло исключение. Вам надо щелк-
нуть на ОК, а затем вы можете посмотреть переменные и понять причину исключения. После
этого возможны действия:!) нажатие клавиш Ctrl-F2 — прекращение выполнения приложе-
ния, 2) нажатие F9 или выполнение команды Run | Run - продолжение работы приложения,
3) нажатие F7 или F8 (или соответствующих быстрых кнопок) — продолжение отладки по
шагам (см. раздел 2.4.8.6 главы 2).

Если хотите, то можете отключить появление этих сообщений. Для этого надо выполнить
команду Tools | Debugger Options, в открывшемся диалоговом окне выбрать страницу Langu-
age Exceptions и выключить на ней опции Stop on Delphi Exceptions и Stop On C++ Exceptions
(останов при генерации исключения Delphi или C++). В этом случае приложение в процессе
отладки будет вести себя так же, как оно ведет себя при обычном запуске.

Если не принять соответствующих мер, то к неприятностям прекращения вы-
числений могут добавиться еще неприятности, связанные с так называемой утеч-
кой ресурсов. Под этим подразумеваются потери динамически распределяемой па-

Рис. 4.26                     п^^ЧИЯЯИ*' ^^""Н^^ИДДи' | ЦЙВШИИИИЯИИЯйИф^ж
Примеры стандартных          НЯн г,... i- ": rAiT"''         ^MV^W^'  '    ^SS

.  '         -  ,-   '   „                ЯКиЯ- ОвтаопЬугюо,;    Ы. .Me not found,     вЭг.-П.РжэдЛатаММеввта!"^*

сообщении об ошибках                ,,,,.:,;,:;:;:-;!:;:    •W-;:           iyi"l!ii^          ».,-,. „,в

деления на нуль, ввода-вывода  IggT,t-.,...„„,._лУ':',:   ' i,._..—_.....,,     ^(NIM^                -и;

и преобразования               |д^.^-.__._1,,1 j |,;1'-——-J | | '! 11111!!l!•llllii..^^