On 9/6/18 1:13 PM, Neia Neutuladh wrote:
The actual structure of the exceptions: `primary` has children `scope 2`
and `scope 1`; `scope 2` has child `cause 2`; `scope 1` has child `cause
1`. A tree.
No, it's a list.
The encoded structure: a linked list where only the first two positions
have any structure-related meaning and the rest are just a sort of
mish-mash.
This isn't a situation you get in Java because Java doesn't have a way
to enqueue multiple independent actions at the end of the same block.
You just have try/finally and try(closeable).
(As an aside, it does seem we could allow some weird cases where
people rethrow some exception down the chain, thus creating loops.
Hopefully that's handled properly.)
Not if you semi-manually create the loop:
auto e = new Exception("root");
scope (exit) throw new Exception("scope 1", e);
throw e;
Filed as https://issues.dlang.org/show_bug.cgi?id=19231
Thanks!
Andrei