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