Offtopic: @mangakissa, you can left away your outer exception block, it has no function.
If you want you can play with this (no Debugger but enabled Heaptrc):function Test: TStringList;
begin
Result:=TStringList.Create;
// raise Exception.Create('TestException');
end;
procedure TForm1.Button1Click(Sender: TObject);
var FileList : TStringList;
begin
// try
try
FileList := Test;
ShowMessage(FileList.Text);
except
on E: Exception do
ShowMessage('Exception: '+E.Message);
end;
// finally
FileList.Free;
ShowMessage('FileList.Free');
// end;
end; The result is the same, with and without the outer exception block.