The GC, destructors, exceptions and memory corruption
Don
nospam at nospam.com
Fri May 13 06:44:33 PDT 2011
Alexander wrote:
> On 13.05.2011 10:25, Don wrote:
>
>> Are you talking about *finalizers* or *destructors* ?
>
> Destructors as defined in D spec. There are no finalizers (yet), AFAIK.
The things in classes which the spec calls "destructors" are finalizers,
not destructors.
>
>> Throwing from inside a destructor should definitely work (unlike C++).
>
> How? Destructor is called by the GC when object is deleted. When and where (which thread) this happens is unknown, it is done outside of regular flow of execution - so who and where can catch this exception? So, like any other uncatched exception,
> it will terminate the program.
If the GC calls it, it's a finalizer, not a destructor.
Structs have destructors, and it's perfectly OK to throw inside them.
More information about the Digitalmars-d
mailing list