Rethrow an exception like in C++?

Rob T alanb at ucora.com
Sun Mar 10 22:35:09 PDT 2013


On Monday, 11 March 2013 at 03:46:22 UTC, Ali Çehreli wrote:
> On 03/10/2013 08:10 PM, Rob T wrote:
> >>>
> >>> Lippincott functions avoid macros and make it more explicit
> that the
> >>> entire body is inside a try block.
> >>>
> >>> Ali
> >>
> >
> > Oops, I think you were showing me an example where it could
> be used.
>
> Yes but we still use the macros! The macros were written ten 
> years ago but I learned about this idiom two months ago. :)
>
> Ali

Ouch, 10 years too late, but I bet you are looking forward to 
using it in your new code.

I was stuck with macros similar to that for a few years. It was 
unbearable because at times I had custom operations to perform 
within a catch, but the macros had various levels of standard 
error logging and reporting, so deciphering the macros and 
inserting new operations was not fun and defeated the purpose 
making it very difficult to maintain. Even more macros appeared 
to try and deal with it. When we started building a new library, 
I searched in desperation for a better solution and luckily 
stumbled on the one that used the rethrow, what a relief! 
Unfortunately the old code still needs to be maintained for 
several more years.

Unlike in C++ we only have to worry about catching Throwable and 
objects derived from it, so things are much better off simply 
because of that. I always thought it to be silly to allow 
anything to be thrown because you'd never be able to know what to 
catch unless you had complete trust in the code. When I first 
looked at D it was improvements like this that had me very eager 
to try it out.

Anyway, thanks for your input, much appreciated!

PS: Your D Programming Tutorial is excellent, many thanks! You 
may want to add a note about the Lippincott idiom in there.

--rt


More information about the Digitalmars-d-learn mailing list