When a function returns an object (as opposed to using one that's passed in by the caller), be careful an exception doesn't cause the object to leak.
function MakeStrings: TStrings;
begin
// Create a new object before entering the try-block.
Result := TStringList.Create;
try
// Execu...