The GC, destructors, exceptions and memory corruption

Don nospam at nospam.com
Fri May 13 06:47:57 PDT 2011


Vladimir Panteleev wrote:
> On Fri, 13 May 2011 11:25:01 +0300, Don <nospam at nospam.com> wrote:
> 
>> Alexander wrote:
>>> On 13.05.2011 06:53, Vladimir Panteleev wrote:
>>>
>>>> Thus, my question is: what's the expected behavior of D programs 
>>>> when a destructor throws?
>>>    I would say, the only expected (and correct, IMHO) behavior should 
>>> be termination of the program because of unhandled exception.
>>>  /Alexander
>>
>> Are you talking about *finalizers* or *destructors* ?
>>
>> Throwing from inside a destructor should definitely work (unlike C++).
>> But finalizers should probably be nothrow.
> 
> How would you distinguish the two in the language? Class destructors = 
> finalizers?

Yes.
struct destructor = destructor

> Come to think of it, SafeD shouldn't allow accessing anything on the 
> heap in finalizers as well...

Yeah. It's pretty hard to come up with a use case for a finalizer.



More information about the Digitalmars-d mailing list