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ż:

0 komentarzy