Throwing constructors and member destructors

Alex sascha.orlov at gmail.com
Tue Nov 20 13:17:02 UTC 2018


On Tuesday, 20 November 2018 at 13:01:40 UTC, Boris-Barboris 
wrote:
> https://run.dlang.io/is/LdylJX
>
> Notice no "B destructor" line in stdout.
>
> Just got bitten by the assumption that my Buffer struct that 
> transactionally aquires multiple external resources in 
> constructor will rollback via member destructors that were 
> successfully completed before the throw.
>
> Can I get a clarification about current semantics? Should I 
> essentially never throw in constructors if I want to rely on 
> scope-based RAII?
>
> And before we start a 10-page argument about the ideology of 
> constructors, I would mostly just like to hear that this is 
> documented somewhere, because I have certanly missed it.

For example:

https://books.google.de/books?id=5_eoCwAAQBAJ&pg=PA104&lpg=PA104&dq=dlang+rely+destructor&source=bl&ots=p33jiNUKBq&sig=yw1ymCzaRaueQ8yDDMjP75iRDYI&hl=de&sa=X&ved=2ahUKEwjosrGlhePeAhVrgM4BHcU6DEAQ6AEwBXoECAMQAQ#v=onepage&q=dlang%20rely%20destructor&f=false

@book{parker2015learning,
   title={Learning D},
   author={Parker, M.},
   isbn={9781785289347},
   url={https://books.google.de/books?id=5\_eoCwAAQBAJ},
   year={2015},
   publisher={Packt Publishing}
   page=104
}

But yeah... I had troubles to find such a clear statement on 
dlang.org too...


More information about the Digitalmars-d-learn mailing list