Лабораторная работа №4. Обработка исключительных ситуаций Цель работы: Познакомиться с возможностями Delphi по защите приложения от воздействия неизбежно возникающих ошибок. Основные понятия: При написании программы могут возникать исключительных ситуаций, т.е. ошибки связанные с получения ресурсов, несоответствия типов данных, делением на ноль и т.п. При разработке приложений в Delphi программист имеет возможность использовать несколько механизмов, обеспечивающих обработку исключительных ситуаций. С точки зрения объектно-ориентированного программирования исключительная ситуация – это объект. В модуле SYSUTILS описан объектный тип Exception. Он является предком для всех других объектов – исключительных ситуаций. Для работы с объектами исключительных ситуаций существуют специальные конструкции языка Object Pascal – блоки Try .. Except и Try .. Finally. Они контролируют выполнение операторов, помещенных внутри блока до ключевого слова Except (Finally). В случае возникновения исключительной ситуации штатное выполнение программы прекращается, и управление передаётся операторам, идущим за указанными ключевыми словами. Хотя синтаксис двух видов блоков похож, но они принципиально отличаются назначением и решаемыми задачами. Поэтому вопрос, какой из них выбрать, не стоит. Блок Try .. Except. Для реакции на конкретный тип ситуации применяется блок Try .. Except. Синтаксис его следующий: Try {Программный код, в котором может возникнуть ошибка} Except {Вывод сообщения об ошибке} End; Выполнение блока начинается с секции Try. При отсутствии исключительных ситуаций только она и выполняется. Секция Except получает управление в случае возникновения исключительной ситуации. После обработки происходит выход из блока, выполняются операторы, стоящие после End. Блок Try .. Finally соответствует случаю, когда необходимо возвратить выделенные программе ресурсы даже в случае аварийной ситуации. Синтаксис его таков: Try {Программный код, в котором может возникнуть ошибка} Finally {Программный код, который будет выполняться в любом случае} End; Высокоуровневые методы информатики и программирования Следующие за Try операторы исполняются в обычном порядке. Если за это время не возникло никаких исключительных ситуаций, далее следуют те операторы, которые стоят после Finally. В случае если между Try и Finally произошла ошибка, управление передаётся на операторы после Finally. Данная конструкция ничего не делает с самой исключительной ситуацией. Задача Try .. Finally – только прореагировать на факт нештатного поведения программы и проделать определенные действия. Порядок выполнения работы 1. Запустите Delphi. Создайте новый проект. 2. Назовите форму MainForm с заголовком Главная. Для формы задайте: размер – 600х800; минимальный размер – 300х400; максимальный размер – 800х1200. 3. Сохраните проект в папку D:\Users\...\Lab4\... . Окно сохраните под именем MainUnit, а проект под именем ErProject. 4. На форме создайте: первую панель высотой 150, сделайте, чтобы она выравнивалась по верхнему краю окна. Измените цвет панели; разделитель высотой 5, сделайте, чтобы он выравнивался по верхнему краю окна; вторую панель высотой 50, сделайте, чтобы она выравнивалась по нижнему краю окна; редактор RichEdit (вкладка Win32), назовите его MainREdit. Сделайте, чтобы он занимал всю оставшуюся форму; диалог открытия файла. Сделайте, чтобы в окне могли отображаться все файлы, текстовые (txt) и текст в формате rtf; диалог сохранения файла. Сделайте, чтобы в окне могли отображать все файлы и текст в формате rtf; диалог выбора шрифта; главное меню с пунктами Файл, Разработчик и Выход. В меню Файл создайте подпункты Сохранить и Загрузить; 5. На первой панели создайте: надпись "1 число", рядом однострочный редактор; надпись "2 число", рядом однострочный редактор; четыре кнопки с заголовками Сумма, Разница, Деление и Умножение. 6. Запрограммируем кнопку Сумма, чтобы при нажатии на неё проверялись значения, введённые в однострочных редакторах, и, если там числа, то их сумма записывалась в многострочный редактор. В процедуру обработки для кнопки введите код: 2 Высокоуровневые методы информатики и программирования Try s := StrToInt (Edit1.Text) + StrToInt (Edit2.Text); MainREdit.Lines.Add(Edit1.Text+'+'+Edit2.Text+'='+IntToStr(s)) Except Application.MessageBox('Введите целое число', 'Ошибка!!!'); MainREdit.Lines.Add ('Ошибка'); End; 7. Аналогично запрограммируйте кнопки Разница, Деление и Умножение. 8. На второй панели создайте две кнопки с заголовками: Шрифт и Очистить. Запрограммируйте их, чтобы первая позволяла изменять шрифт в многострочном редакторе, а вторая – удаляла всё из него. 9. Создайте вторую форму размером 400х400, измените её цвет. Назовите форму AboutForm с заголовком Разработчик. На форме: напишите своё Ф.И.О., группу, № лабораторной работы, год. Измените для надписи цвет и размер шрифта; создайте графическую кнопку с предопределённым видом Close. 10. На форме Главная запрограммируйте главное меню. 3