On Sunday, 15 August 2021 at 00:15:32 UTC, Ali Çehreli wrote:
Even though this feature is probably never used, in D, multiple
exception objects are chained. For example, you can throw e.g.
in a destructor when there is an active exception in flight and
that second object gets attached to the first one in linked
list fashion.
This may be useful in some cases but in general, these
colatteral exceptions don't carry much information and I don't
think anybody looks at them. Usually, the first one is the one
that explains the error case.
That is just an assumption. There could be designs where original
exception gets wrapped in another one to comply with some
interface, and in such cases, having entire chain visible, is
useful. Also exceptions carry the stack trace which is useful, in
debugging, allowing you to know possible location of the bug.
Regarding exception chaining, do you mean that it will
automatically get chained, even without explicitly passing it as
constructor of wrapping exception?
If so, it indeed might be best to remove such functionality, and
just force user to do this by himself. He will then be able to
decide whether chained exception does or does not carry any
useful meaning.
Regards,
Alexandru