Struct field destructor not called when exception is thrown in the main struct destructor

tchaloupka chalucha at gmail.com
Sat Oct 17 12:00:09 UTC 2020


On Friday, 16 October 2020 at 16:00:07 UTC, Steven Schveighoffer 
wrote:
> On 10/16/20 9:12 AM, tchaloupka wrote:
>
>> So when the exception is thrown within Foo destructor (and 
>> it's bad on it's own but can easily happen as destructors 
>> aren't nothrow @nogc by default).
>> 
>> Is this behavior expected?
>
> I would say it's a bug. The compiler is going to call the 
> member destructor even if the hand-written destructor does it 
> too. If the compiler wants to take responsibility for cleaning 
> up members, it should take full responsibility. In fact, there 
> is no way to instruct the compiler "I'm handling the 
> destruction of this member", so I don't see why it should 
> matter if you exit the function via exception it should be any 
> different.
>
> -Steve

Thx, added https://issues.dlang.org/show_bug.cgi?id=21322


More information about the Digitalmars-d-learn mailing list