Rethrow an exception like in C++?

Rob T alanb at ucora.com
Thu Mar 7 21:46:47 PST 2013


On Friday, 8 March 2013 at 01:56:45 UTC, Andrej Mitrovic wrote:
> On 3/8/13, Rob T <alanb at ucora.com> wrote:
>> In C++, I rethrow an exception without explicitly catching it
>>
>> catch(...)
>> {
>>     throw;
>> }
>>
>> Anyone know of a way to do the same thing in D?
>>
>> catch
>> {
>>     // rethrow?
>>
>> }
>
> The only way:
>
> try { }
> catch (Exception ex) { throw ex; }
>
> Or use Error or Throwable if really necessary, however you 
> shouldn't
> really catch those in normal code.

That's very unfortunate, and should be corrected, because it 
means that you cannot easily catch multiple derived Exception 
types and rethrow the same derived type. Instead you have to 
explicitly catch all derived types and rethrow them individually, 
but that's simply not practical, so you end up catching only the 
base exception (Throwable?) and rethrow it, but you lose the 
derived type in the process.

--rt


More information about the Digitalmars-d-learn mailing list