Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_лекция-32-Т5.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
75.26 Кб
Скачать

5.19. Исключительные ситуации (класс Exception)

5.19.1. Что такое "исключение"

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

Ситуации, приводящие к нарушениям вычислительного процесса и требующие специальных действий по предотвращению аварийного завершения программы принято называть Исключительными ситуациями (ИС). Заметим, что ИС не обязательно связаны с прерываниями ОС. Например контроль количества циклов при решении нелинейных уравнений.

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

Платой за надежную работу программы в таких условиях служит введение многочисленных проверок, способных предотвратить некорректные действия в случае возникновения нештатной ситуации. Хорошо, если в конце очередной конструкции if..then можно просто поставить оператор Exit. Часто для корректного выхода из ситуации нужно отменить целую последовательность действий, предшествующих неудачному (например, освободить память). Все это сильно запутывает программу, маскируя четкую структуру главного алгоритма.

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

Цель обработки ИС - защищать приложения от воздействия неизбежно возникающих ошибок.

Замечание 1. Есть разница в реакции при запуске программы из Delphi и при активизации файла exe. При запуске из Delphi исключение будет сначала перехвачено средой и на экране появится сообщение на английском языке о характере и месте возникновении ошибки. например такое

Project Pro3 raised Exceptions class EdivideByZero With

message 'Division By Zero'. Project Stopped. Use Step or

Ran to continue

OK

После щелчка по OK приложение виснет. Надо нажать Ctrl+F9, появится окно с текстом Debug Session in progress

Terminate?

Надо щелкнуть по ОК и можно продолжить работу.

Другой способ – отключить перехватчик ИС отладчика. Для этого надо сбросить флажок опции Stop on Delphi Exception во вкладке Language Exception диалогового окна Debugger Options меню Tools.

Замечание 2. Если в программе надо предусмотреть проверку диапазона значений, например для данных типа диапазон, то предварительно надо установить опцию компилятора RangeChecking активной (Project / Options / окно Project Options / вкладка Compiler / RunTime errors / RangeChecking).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]