Finally
Szczawik
Finally - słowo kluczowe języka Delphi
Słowo kluczowe finally jest nieodłącznym elementem konstrukcji try .. finally ... end;.
Służy do obsługi mechanizmu wyjątków. Wyrażenia z zastosowaniem tego słowa kluczowego mają postać następującą:
try
//instrukcje mogące wywołać wystąpienie wyjątku
finally
//instrukcje wykonywane mimo wystąpienia wyjątku
end;
Jeśli w bloku instrukcji, które mogą wywołać wyjątek, tenże nie wystąpi, wykonywany jest blok finally, a następnie instrukcja po słowie kluczowym End. Jeśli jednak wyjątek wystąpi, wszystkie instrukcje od rozkazu wywołującego wyjątek do słowa kluczowego finally są pomijane, a wykonywane są instrukcje z bloku występującego po tym słowie kluczowym. Po ich zakończeniu wystąpienie wyjątku zostaje ponownie zgłoszone (tak zwana propagacja wyjątku) i wyjątek musi zostać obsłużony po słowie End. Dzięki temu, instrukcje w bloku finally zostaną wykonane bez względu na pojawienie się wyjątku, co daje możliwość finalizacji pewnych operacji (na przykład poprawne zamykanie plików czy strumieni), mimo iż wcześniejsze działania zgłosiły wystąpienie wyjątku.
Blok try .. finally ... end; często jest zawierany w bloku try .. except ... end;
Praktyczne wykorzystanie obsługi wyjątków można zobaczyć na poniższym przykładzie:
program Przyklad;
{$APPTYPE CONSOLE}
uses
SysUtils;
begin
WriteLn('Operacja poczatkowa'); //Wykonane
try
WriteLn('Operacja przed blokiem'); //Wykonane
try
WriteLn('Operacja przed wyjatkiem'); //Wykonane
raise Exception.Create('WYJATEK'); //Wyjatek!
WriteLn('Operacja po wyjatku'); //Nie wykonane
finally
WriteLn('Wystapil wyjatek'); //Wykonane
end;
WriteLn('Operacja po bloku'); //Nie wykonane
except
WriteLn('Obsluzono wyjatek'); //Wykonane
end;
WriteLn('Operacja konczowa'); //Wykonane
end.
Zobacz też: