Описание |
Ключевое слово Finally используется, чтобы отметить начало конечного блока инструкций в инструкции Try. Они будут выполнены независимо от того, что случится в инструкциях Try.
Однако, предложение Finally фактически не обрабатывает никаких исключений - программа закончится, если никакое предложение Except не найдено (см. примечания ниже).
Try-Finally обычно используется подпрограммой, чтобы позволить освободить ресурсы.
|
|
Примечания |
Try
...
Except
...
Finally
...
End;
где исключения заманены в ловушку и обработаны, но в любом случае, набор инструкций очистки будут выполнены. Это может быть достигнуто с помощью вложенных инструкций Try:
Try
Try
...
Except
...
End;
Finally
...
End;
|
|
Похожие команды |
Except Начинает предложение заманивающее в ловушку ошибки Try инструкции
On Определяет обработку особых ситуаций в предложении Try Except
Raise Поднимает исключение
Try Начинает код, который перехватывает ошибки
| |
|
Пример кода : Деление на ноль с предложением finally |
var
number, zero : Integer;
begin // Попытка деленя целого числа на нуль - чтобы поднять исключение
number := -1;
Try
zero := 0;
number := 1 div zero;
ShowMessage('number / zero = '+IntToStr(number));
Finally
if number = -1 then
begin
ShowMessage('Числу не было присвоено значение - использование значения по умолчанию');
number := 0;
end;
end;
end;
|
Числу не было присвоено значение - использование значения по умолчанию
Затем, программа заканчивается с сообщением об ошибке EDivByZero -, предложение finally не выловило ошибку.
|
|