Уроки по Delphi




Урок18. Корректное построение программного кода. Рисование. Построение графика функции - часть 4


В уроке15 мы рассматривали пример, в котором есть директива компилятору об отключении контроля ошибок ввода-вывода. Мы открывали файл, при отключенном автоматическом контроле, после чего сами обрабатывали ошибку открытия.

{$I-} // отключение контроля ошибок ввода-вывода

Reset(f); // открытие файла для чтения

{$I+} // включение контроля ошибок ввода-вывода

if IOResult<>0 then // если есть ошибка открытия, то

   begin

      ShowMessage('Ошибка открытия файла C:\1.TXT');

      Exit; // выход из процедуры при ошибке открытия файла

   end;

Такой метод можно применять только с старыми форматами команд, совместимыми с языком программирования pascal и работающими только с устройствами ввода-вывода.

В delphi можно применять следующее:

try // начало опасно-ошибочной части процедуры:

   Form1.ShowModal;

except // если возникла ошибка, то выполняется следующее:

   ShowMessage('Ошибка открытия окна');

end; // конец try

ShowMessage('Дальнейшая обработка процедуры');

Заметьте, что этот кусок кода не вызовет ошибки выполнения. Программа просто вам сообщит об ошибке открытия окна, после чего процедура продолжит свое выполнение. Еще обратите внимание, что если в части, после except возникнет другая ошибка выполнения, то процедура таки точно завершит свою работу немедленно. Все команды, которые могут вызвать ошибку надо писать после try и до except.

Теперь можно без опаски потери данных, после except корректно закрыть все открытые файлы, при необходимости окна, сообщить пользователю о возникшей ошибке и самому выйти из процедуры с помощью Exit.

Аналогом try-except есть try-finally

procedure TForm1.Button1Click(Sender: TObject);

Var StringList:TStringList; // список строк

begin

try

   StringList:=TStringList.Create; // создание списка строк

finally // при успешной обработки создания списка:

   StringList.Free; // удалить и освободить память




Содержание  Назад  Вперед