The Right Approach to Exceptions

foobar foo at
Tue Feb 21 02:48:52 PST 2012

On Tuesday, 21 February 2012 at 02:23:58 UTC, Andrei Alexandrescu 
> On 2/20/12 7:02 PM, Juan Manuel Cabo wrote:
>> oops, sorry!! I just saw a post by someone named Jose. My 
>> thousand apollogies!!
> I got confused. It was your argument I meant to refer to - 
> adding info to the exception in flight.
> Andrei

I'd implement this along these lines:

class WithErrorCode(E) : E {
   int errorCode;
   this(Args)(int err, Args args) { this.errorCode = err; 
super(args); }

and add this wrapper where relevant. e.g. replace:
throw new FileNotFoundException(...);
with something like:
throw new WithErrorCode!FileNotFoundException(-1, ...);

This is a localized change that doesn't affect all uses of 
exceptions and it remains type-safe. surely this is a better 
solution than the hash table?

More information about the Digitalmars-d mailing list