- •Федеральное агентство по образованию
- •Тульский государственный университет
- •Тема 1. Создание простых приложений в среде delphi
- •1.1 Среда Delphi
- •1.1.1 Понятия «проект», «форма», «компонент»
- •1.1.2 Краткое описание интегрированной среды разработки Delphi
- •Использование модулей
- •1.2 Начало работы
- •1.3. Пример написания программы
- •1.3.1. Изменение заголовка формы
- •1.3.2. Размещение строки ввода (tEdit)
- •1.3.3. Размещение надписей (tLabel)
- •1.3.4. Размещение многострочного окна вывода (tMemo)
- •1.3.5. Написание программы обработки события создания формы (FormCreate)
- •1.3.6. Написание программы обработки события нажатия кнопки (ButtonClick)
- •1.3.7. Запуск и работа с программой
- •1.4. Выполнение индивидуального задания
- •Индивидуальные задания
- •Контрольные вопросы
- •Тема 2. Программирование с использованием переключателей. Отладка программы
- •2.1 Операторы ветвления и циклов языка Паскаль
- •2.1.1 Операторы if и case
- •2.1.2 Операторы repeat, whyle, for
- •2.2 Кнопки-переключатели в Delphi
- •2.3. Компонент tMaskEdit
- •2.3. Средства отладки программ в Delphi
- •2.4.4. Создание обработчиков событий FormСreate и BottomClick
- •2.5. Выполнение индивидуального задания
- •Контрольные вопросы
- •Тема 3. Программирование с использованием массивов. Обработка исключительных ситуаций
- •3.1. Работа с массивами
- •3.2. Обработка исключительных ситуаций
- •3.3. Порядок выполнения задания
- •Компонент tStringGrid и его настройка
- •3.4. Индивидуальные задания
- •Контрольные вопросы
- •4.4. Компонент tBitBtn
- •4.5. Обработка событий
- •4.6. Порядок выполнения индивидуального задания
- •4 .7. Индивидуальные задания
- •Контрольные вопросы
- •ПРиложение 1. Команды основного меню
- •ПРиЛожение 2. Свойства компонентов п2.1. Общие свойства компонентов
- •Свойство Align
- •Свойство Color
- •П2.3. Компоненты страницы additional
- •П2.4. Компоненты страницы dialogs п2.4.1.Правила использования диалоговых панелей
- •Приложение 3. Простые типы данных языка object Pascal п3.1.Целые типы
- •П3.2.Логические типы
- •П3.3.Символьный тип
- •П3.4. Перечисляемый тип
- •П3.5. Вещественные типы
- •Пз.6. Тип дата-время
- •Приложение 4. Процедуры и функции для работы со строками
- •Приложение 5. Математические формулы
- •Литература
3.2. Обработка исключительных ситуаций
Термин исключительная ситуация (exception) обозначает любую ошибку или ошибочное условие, возникающие в процессе выполнения программы. Примерами исключительных ситуаций являются деление на 0, запись в файл, открытый только для чтения, ошибки при преобразовании типов. Традиционный подход для контроля и обработки подобных ошибок заключается в использовании условных операторов. Однако они загромождают программу, делают ее менее ясной.
Обработку исключений (ошибок) берет на себя автоматически добавляемый в выполняемую программу код, который обеспечивает, в том числе, вывод информационного сообщения. Вместе с тем Delphi дает возможность программе самой выполнить обработку исключения.
Инструкция обработки исключения в общем виде выглядит так:
try
// здесь инструкции, выполнение которых может вызвать исключение
except // начало секции обработки исключений
on ТипИсключения1 do Обработка1;
on ТипИсключения2 do Обработка2;
on ТипИсключенияJ do ОбработкаJ;
else
// здесь инструкции обработки остальных исключений
end;
где:
try — ключевое слово, обозначающее, что далее следуют инструкции, при выполнении которых возможно возникновение исключений, и что обработку этих исключений берет на себя программа;
except — ключевое слово, обозначающее начало секции обработки исключений. Инструкции этой секции будут выполнены, если в программе возникнет ошибка;
on — ключевое слово, за которым следует тип исключения, обработку которого выполняет инструкция, следующая за do;
else — ключевое слово, за которым следуют инструкции, обеспечивающие обработку исключений, тип которых не указаны в секции except.
Как было сказано выше, основной характеристикой исключения является его тип. В таблице 13.1 перечислены наиболее часто возникающие исключения.
Если для класса исключительной ситуации существует блок обработки, выполняется часть блока после do и управление передается за блок tryexcept. Порядок блоков обработки имеет значение: вначале проводится распознавание частных исключительных ситуаций, затем – более общих.
Для генерирования исключительной ситуации используется зарезервированное слово raise.
Ниже приведен пример функции, генерирующей исключительную ситуацию:
function StrToPersent(const S: string): Integer;
begin
Result := StrToInt(S);
if (Result < 0) or (Result > 100) then
raise EConvertError.Create(S + 'is not a valid value')
end;
Функция StrToPersent может генерировать исключительную ситуацию класса EConvertError. В следующей функции она распознается и обрабатывается:
function IncPercent(const S: string): string;
begin
try
Result := IntToStr(StrToPercent(S) + 1);
except
on EConvertError do Result := '0';
end
end;
Для корректного освобождения ресурсов приложения часто используется блок try-finally. Синтаксис блока следующий:
try
// операторы, которые могут вызвать исключительную ситуацию
finally
// эти операторы выполняются всегда
end;
При возникновении исключительной ситуации в части try-finally управление передается на часть finally-end. При нормальной работе выполняются все операторы между try и end.
Если возникшая исключительная ситуация программистом не обработана, вызывается обработчик события OnExcept объекта Application. Если этот обработчик не установлен, выводится стандартное окно с текстовым сообщением об ошибке.