Я приведу пример фрагмента программы, ниже будет дано подробное описание данного фрагмента.
try
A := StrToInt (Input.Text);
except
ShowMessage ('Ошибка ввода целого числа!!!');
Input.SelectAll;
Exit;
end;
В данном фрагменте программы с помощью зарезервированных слов try, except и end реализуется так называемый защищённый блок. Такими блоками программист может защитить программу от краха от ошибки.
После слова try ставится выражение, которое необходимо выполнить в программе. В данном случае программа пробует с помощью функции StrToInt преобразовать строковое значение из текстового поля с именем Input в целое значение.
Защита действует следующим образом:
Если при выполнении операторов, расположенных после слова try, была обнаружена ошибка, то выполняются операторы, расположены после слова except. Если ошибка не обнаружена, то выполняются операторы, следующие после слова end. В данном случае с помощью функции ShowMessage программа выводит сообщение с указанным текстом, после чего программа выделяет содержимое текстового поля и предлагает ввести ошибочное значение заново.
Ошибочным значением может быть: строковое значение, дробное значение или вообще не введённое значение.
Другой вариант обработки исключительных ситуаций:
try
<выражение1>
finally
<выражение2>
end;
В данном случае <выражение2> выполнится в любом случае, но при ошибке в <выражении2> управление будет передано <выражению2>.
Конструкцию finally...end удобно использовать, например, при загрузке из файла изображения в TBitMap.
Например:
procedure TForm1.Button1Click(Sender: TObject);
var
bitmap: TBitMap;
begin
bitmap := TBitMap.Create;
try
bitmap.LoadFromFile('bitmap.bmp');
Canvas.Draw(bitmap);
finally
bitmap.Free;
end;
end;
Вначале bitmap инициируется с помощью конструктора Create. Затем в теле программы в bitmap загружается изображение из файла. Даже при возникновении ошибки необходимо вызвать деструктор класса с помощью метода Free. Поэтому для этого используется конструкция finally...end.
Иногда программе необходимо самостоятельно вызвать исключение. Для этого используется зарезервированное слово raise.
Вообще, для обработки исключительных ситуаций используется класс TException, а также его многочисленные потомки.
Инициировать исключение можно так:
try
x := StrToInt(st);
if x < 0 then raise EAbort.Create('Число меньше нуля!');
except
ShowMessage('Ошибка!!!');
end;
В этом случае при ошибке преобразования строки в число появится сообщение об ошибке, а также при отрицательном числе программа вызывает собственное исключение, при этом также появится сообщение об ошибке.
Опубликовал Kest
October 29 2008 13:37:28 ·
0 Комментариев ·
7490 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.