 
        
        Визуальное программирование / Лабораторная работа-6_ИС
.docЛабораторная работа № 6
Отладка программ. Исключительные ситуации и их обработка. Создание локальных обработчиков событий
Цели лабораторной работы. Продолжение знакомства с интерфейсом среды Delphi. Анализ разновидностей ошибок возникающих в ходе разработки и эксплуатации программ. Создание локальных обработчиков исключительных ситуаций. Отработка навыков отладки и выполнения программ.
 Теоретический материал
Примеры потомков класса Exception.
- 
EAbort – “тихое” исключение, используемое для прерывания текущего блока кода без вызова глобального обработчика. 
- 
EOutOfMemory – не достаточно оперативной памяти для выполнения операции. 
- 
EIntOutError – ошибка вводавывода файла любого типа. 
- 
EIntError – базовый класс для обработки ошибок, связанных с операциями над целыми числами. Специализированные исключения обрабатываются потомками этого класса: - 
EIntOverflow – переполнение в операции с целочисленными переменными; 
- 
EDivByZero – деление целого числа на ноль; 
- 
ERangeError – присвоение целочисленной переменной значения, выходящего за пределы допустимого диапазона (может вызываться при попытке обращения к элементам массива по индексу, выходящему за границы). 
 
- 
- 
EMathError – базовый класс для обработки ошибок в операциях с плавающей точкой. Специализированные исключения обрабатываются потомками этого класса: 
- 
EInvalidOp – ошибка при выполнении операции над числом с плавающей точкой; 
- 
EZeroDivide – деление на ноль числа с плавающей точкой; 
- 
EOverFlow – присвоение вещественной переменной значения, которое не помещается в определенной области памяти; 
- 
EUnderFlow – потеря значимости при операции над числами с плавающей точкой, результат получает нулевое значение. 
- 
EInvalidPointer – некорректная операция с указателем. 
- 
EInvalidCast – неверное приведение типов с помощью оператора as. 
- 
EConvertError – ошибка преобразования типов, возникающая, например, при преобразовании строковых данных в числовые с помощью функций StrToInt или StrToFloat. 
- 
EFCreateError – ошибка создания файла. 
- 
EFOpenError – ошибка открытия файла. 
- 
EResNotFound – указанном файле отсутствует ресурс. 
- 
EListError, EStringListError – ошибка в списках. 
- 
EPrinter – ошибка печати. 
- 
EMenuError – ошибка в меню приложения. 
- 
EInvalidGraphicOperation – неправильная операция с графическим объектом. 
Конструкция try .. finally состоит из двух секций и имеет следующий формат:
Try
// Операторы, выполнение которых может вызвать ошибку
finally
// Операторы, которые должны быть выполнены даже в случае ошибки
end;
Формат конструкции try .. except следующий:
Try
// Операторы, выполнение которых может вызвать ошибку
except
// Операторы, которые должны быть выполнены в случае ошибки
end;
Примеры
1. Обработка исключительных ситуаций возникающих при попытка конвертировать в числовое строковых значений, которые не являются числами, а также при попытке деления на ноль.
procedure TForm1.Button1Click(Sender: TObject);
begin
try
label1.Caption:=FloatToStr(StrToFloat(Edit1.Text)/FloatToStr);
except
On EConvertError do
  If
MessageDLg('Содержимое
поля
Edit1 равно
'+Edit1.Text+#10#13+'Это
не
число!',mtError,[mbOk],0)=mrOk
Then
 If
MessageDLg('Содержимое
поля
Edit1 равно
'+Edit1.Text+#10#13+'Это
не
число!',mtError,[mbOk],0)=mrOk
Then
begin
Edit1.text:='';
Edit2.Text:='';
Edit1.SetFocus;
end;
On EZeroDivide do
  If
MessageDLg('Делить
на
ноль
нельзя',mtError,[mbOk],0)=mrOk
Then
 If
MessageDLg('Делить
на
ноль
нельзя',mtError,[mbOk],0)=mrOk
Then
begin
Edit2.text:='';
Edit2.SetFocus;
end;
end;
end;
 
Задания для самостоятельной работы.
- 
Проанализировать возможности по отладке программ в среде Borland Delphi. Рассмотреть классы исключительных ситуаций и работу с объектами этих классов. 
- 
Рассмотреть примеры работы глобального обработчика исключительных ситуаций. 
- 
В предшествующих лабораторных работах создать локальные обработчики исключительных ситуаций. 
Примеры ошибок для устранения которых можно создать локальные обработчики исключительных ситуаций.
Лабораторная работа № 2:
- 
попытка сложения чисел из полей редактирования в тех случаях, когда в поле находится не числовое значение; 
- 
отрицательные размеры объектов. 
Лабораторная работа № 3:
- 
ввод в поле калькулятора нечисловых значений и попытка их конвертации в числа; 
- 
деление на ноль; 
- 
вычисление арифметического квадратного корня из отрицательного числа; 
- 
вычисление логарифма от неположительного числа. 
Лабораторная работа № 4:
- 
попытка установления связи с файлом имя которого не определено; 
- 
работа с неоткрытым файлом; 
- 
указание номера правильного ответа, выходящего за границы допустимого диапазона. 
Необходимо создать 5-6 обработчиков исключительных ситуаций, в каждой лабораторной работе должен быть хотя бы один обработчик исключений.
 Контрольные вопросы
- 
Виды ошибок возникающих в ходе разработки и эксплуатации программ. 
- 
Особенности синтаксических ошибок. Примеры. 
- 
Особенности логических ошибок. Примеры. 
- 
Особенности динамических ошибок. Примеры. 
- 
Как можно получить в окне отладчика отображение значений некоторых переменных (выражений) 
- 
Синтаксис и семантика оператора try .. finally. 
- 
Синтаксис и семантика оператора try .. except. 
- 
