Du kan ikke bruge except og finally på den her måde. Hvis du har behov for det kan det gøres på nedenstående måde:
<pre>
try
try
//kode
except
//fang nogle exceptions
end;
finally
//oprydningskode
end;
</pre>
Husk i øvrigt at hvis der bliver rejst en exception så er det kun koden i din exception-handler der bliver udført og proceduren afsluttes herefter. Har man pakket sin try-except ind i en try-finally vil koden efter finally dog også blive udført.
Det er faktisk ikke helt rigtigt. Hvis du har en try ... except struktur og der opstår en exception bliver den jo fanget af except delen, så langt så godt. Men proceduren afslutter ikke der, hvis der er kode efter try ... except strukturen, fortsætter afviklingen af denne kode. Det er ikke nødvendigt med en try ... finally, men mindre du har noget allokeret stads som kan været gået i stykker og som du vil være helt sikker på bliver frigivet.
I 9 ud af 10 tilfælde er det nok med en try ... except.
Altså:
procedure etellerandet;
var
obj : TStringList;
begin
obj := TStringList.Create;
try
except
on e : exception do
showmessage('Fejl: ' + e.message);
end;
obj.free;
end;
--
Thomas Due
Software developer
udvikleren.dk - ASP redaktør
tdue@mail.dk