Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Ошибки и исключительные ситуации

Читайте также:
  1. Goodbit в действительности не является битом, а представляет собой нулевое значение, указывающее на то, что никакие биты ошибки не устанавливались.
  2. I. ЗАДАЧИ, РЕШАЕМЫЕ ОРГАНАМИ ВНУТРЕННИХ ДЕЛ ПРИ ЧРЕЗВЫЧАЙНОЙ СИТУАЦИИ
  3. I. Первые ошибки 1 страница
  4. I. Первые ошибки 2 страница
  5. I. Первые ошибки 3 страница
  6. I. Первые ошибки 4 страница
  7. I. Первые ошибки 5 страница

Программирование на языке Delphi

Глава 4. Исключительные ситуации и надежное программирование

Авторы: А.Н. Вальвачев К.А. Сурков Д.А. Сурков Ю.М. Четырько

Опубликовано: 26.11.2005 Версия текста: 1.0

Оглавление

Программирование на языке Delphi 1

Глава 4. Исключительные ситуации и надежное программирование. 1

4.1. Ошибки и исключительные ситуации. 1

4.2. Классы исключительных ситуаций. 2

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

4.3.1. Создание исключительной ситуации. 4

4.3.2. Распознавание класса исключительной ситуации. 6

4.3.3. Пример обработки исключительной ситуации. 7

4.3.4. Возобновление исключительной ситуации. 8

4.3.5. Доступ к объекту, описывающему исключительную ситуацию.. 9

4.4. Защита выделенных ресурсов от пропадания. 9

4.4.1. Утечка ресурсов и защита от нее. 9

 

 


Ошибки и исключительные ситуации

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

Хорошая программа должна справляться со своими ошибками и работать дальше, не зацикливаясь и не зависая ни при каких обстоятельствах. Для обработки ошибок можно, конечно, пытаться использовать структуры вида if <error> then Exit. Однако в этом случае ваш стройный и красивый алгоритм решения основной задачи обрастет уродливыми проверками так, что через неделю вы сами в нем не разберетесь. Из этой почти тупиковой ситуации среда Delphi предлагает простой и элегантный выход — механизм обработки исключительных ситуаций.

Исключительная ситуация (exсeption) — это прерывание нормального хода работы программы из-за невозможности правильно выполнить последующие действия.

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

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

Механизм обработки исключительных ситуаций довольно сложен в своей реализации, но для программиста он прост и прозрачен. Для его использования в язык Delphi введены специальные конструкции try... exсept... end, try... finally... end и оператор raise, рассмотренные в этой главе.


Дата добавления: 2015-12-08; просмотров: 148 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.008 сек.)