Обработка с использованием блока try-finally-end

В тех ситуациях, когда реакция программы на возникшую ошибку не так важна, как корректное завершение фрагмента программы, вызвавшего исключение, используется блок Try-finally-end. Например, это ситуации связанные с необходимостью вернуть операционной системе ресурсы. При этом не важно возникала ли или нет ошибка при работе с этим ресурсом.

Синтаксис:

Try

<Фрагмент программы1>

Finally

<Фрагмент программы2>

End

Правило действия:

  1. Выполняется фрагмент программы1.
  2. Если в первом фрагменте возникла ошибка, то он прерывает свою работу и управление передается в блок Finally-End.
  3. Если в первом фрагменте нет ошибок, то он выполняется полностью, а затем управление передается в блок Finally-End.

Пример:

var b:TBitmap begin b:= TBitmap.Create; TRY b.Canvas.Rectangle(1,1,100,100); FINALLY b.free; END;

Замечание для практики:

В настройках по умолчанию среда Delphi автоматически перехватывает управление программой при каждом исключении. Поэтому блоки обработки исключений работать не будут. Для устранения этого необходимо вызвать пункт меню Tools\Debugger Options и на странице Language Exception убрать флажок в переключателе Stop on Delphi Exception.

Динамические массивы (для использования при работе с файлами)

Использование функции SetLength:

var k:array of integer;

SetLength(k,5);

High(k) – возвращает максимальное значение индекса в массиве k (элементов в массиве к+1, т.к. нумерация идет с 0).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: