On Monday, 6 October 2014 at 14:54:21 UTC, Andrei Alexandrescu
wrote:
On 10/6/14, 7:24 AM, monarch_dodra wrote:
If your "catch" throws an exception, then the new exception
simply
"squashes" replaces the old one:
//----
catch (Exception e)
{
thisMightThrow(); //Lose "e" here
throw e;
}
//----
That's code under library/user control, I'm talking about the
responsibility of the language. -- Andrei
Right. but if correct usage is so cumbersome no one does it
right, then it is 's/the responsibility/a flaw/' of the language.
Are we advocating then that code under user control should
systematically look like this?
catch (Exception e)
{
try
{
thisMightThrow(); //Lose "e" here
}
catch(Exception ee)
{
findLast(e).next = ee; //because e.next might
}
throw e;
}
Honestly, a good middle ground is to ditch chaining, but allow
multiple exceptions thrown at once. Subsequent Exceptions/Errors
will just be lost (sorry), with the exception that an Error will
override an Exception.
For the sake of argument, do you have any examples where a
program has used chaining?