Rethrow an exception like in C++?

Rob T alanb at ucora.com
Thu Mar 7 23:08:48 PST 2013


On Friday, 8 March 2013 at 06:05:02 UTC, Maxim Fomin wrote:
>
> Actually no.
>
> class myException1 : Exception { this() { super("1"); } }
> class myException2 : Exception { this() { super("2"); } }
>
[...]

Thanks! That solves 99% of my problem. I wasn't aware that I 
could check the derived type from a base class reference like 
that.

The only remaining 1% is that I have a bit more boiler plate code 
for my catch, because I still have to always explicitly catch 
something otherwise I cannot )for example) write a function to 
get the exception and perform work on it and then rethrow. 
Instead I have to

catch( Exception E )
{
    throw dostuff( E );
}

in C++ I could do simply this

catch(...)
{
    // do stuff could get the exception on its own
    throw dostuff();
}


Seems trivial, but over hundreds of functions it becomes more of 
a significant productivity issue.

I can live with it, but I still think D could use an ability to 
rethrow whatever was the last exception with having to explicitly 
catch it.

--rt


More information about the Digitalmars-d-learn mailing list