Comparing these to codes
try
trythisfunction;
finally
alwaysdothisfunction;
end;
try
trythisfunction;
finally
;
end;
alwaysdothisfunction;
Don't they do exactly the same thing?
If your example works ok then it will look same, but it isn't same.
try this:
procedure TestTryFinally;
begin
try
exit;
finally
writeln('I''m in finally block !');
end;
writeln('I will not come here.');
end;
That means: In any case, code in finally block is excuted. In your example if yours trythisfunction; crashes or exits
alwaysdothisfunction() will never execute since it is out of finally block.