Not so. Check the help on free.
It is perfectly safe as long as issues and terrorists were set to nil
first. I think the compiler shows warnings if you don't anyway. I could
have also explicitly checked to see if they were assigned in the finally
but don't generally bother as this is what free does anyway. I am
willing to concede that calling destroy would be bad though 8). 

Paul


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
On Behalf Of Nahum.Wild
Sent: Thursday, 4 March 2004 4:08 p.m.
To: 'NZ Borland Developers Group - Delphi List'
Subject: RE: [DUG] try..finally : Which way is best?

If issues fails then the finally will try to free terrorists, which will
probably cause another exception. :o)

Nahum.

> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Behalf Of Paul Needham
> Sent: Thursday, 4 March 2004 15:59 p.m.
> To: 'NZ Borland Developers Group - Delphi List'
> Subject: RE: [DUG] try..finally : Which way is best?
>
>
> How about.....
>
> issues := nil;
> terrorists := nil;
> changes := TStringList.create;
> try
>   issues := TIssuesList.create;
>   terrorists := THardToFind.create;
>
>   ...
>
> finally
>   terrorists.free;
>   issues.free;
>   changes.free;
> end;
>
> Paul
> DBSolutions
>
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]
> On Behalf Of Nahum.Wild
> Sent: Thursday, 4 March 2004 3:37 p.m.
> To: 'NZ Borland Developers Group - Delphi List'
> Subject: [DUG] try..finally : Which way is best?
>
> Ok so this is something that has bugged me for ages, partly because I
> don't
> know and partly because I can't be bother trying to figure it out.
>
> is the following code ok? or should I give each it's own try..finally?
>
> --
>
> changes := TStringList.create;
> issues := TIssuesList.create;
> terrorists := THardToFind.create;
> try
>
> // stuff is done, planes flown.  That type of things.
>
> finally
>   terrorists.free;
>   issues.free;
>   changes.free;
> end;
>
> --
>
> I mean what could go wrong in the TStringList.create constructor for
> example?  It's not like there should be anything much in there that
> could go
> wrong anyway?  Because if it does except the destructor will be
> immediately
> called - learnt that one the hard way many years ago.  As a
> general rule
> of
> thumb I don't put anything significant in a constructor for my own
> classes -
> that's what init or setup methods are for.
>
> For the record I've never done it this way, I've always given
> each their
> own
> try..finally.
>
> Thoughts anyone?
>
>
>
> Nahum Wild
> Software Innovator & Process Consultant
> IFE
> PayGlobal
>
> _______________________________________________
> Delphi mailing list
> [EMAIL PROTECTED]
> http://ns3.123.co.nz/mailman/listinfo/delphi
>
> _______________________________________________
> Delphi mailing list
> [EMAIL PROTECTED]
> http://ns3.123.co.nz/mailman/listinfo/delphi
>

_______________________________________________
Delphi mailing list
[EMAIL PROTECTED]
http://ns3.123.co.nz/mailman/listinfo/delphi

_______________________________________________
Delphi mailing list
[EMAIL PROTECTED]
http://ns3.123.co.nz/mailman/listinfo/delphi

Reply via email to