The Right Approach to Exceptions

Jonathan M Davis jmdavisProg at gmx.com
Mon Feb 20 19:24:37 PST 2012


On Monday, February 20, 2012 20:36:16 Andrei Alexandrescu wrote:
> On 2/20/12 7:07 PM, Jonathan M Davis wrote:
> (Cloning and comparison are also essential polymorphic methods to
> implement.) But then again the view "exceptions are wildebeests" is
> coming straight from inside the box. We want to improve on that.

Neither of which need to be done much with exceptions.

> I don't think inheritance without subtyping would help any. C++ has it
> (non-public inheritance) but that didn't improve exceptions one bit.

I don't think that it would necessarily improve them. My point was that 
polymorphism isn't of much use for exceptions. So whether they are polymorphic 
or not is generally irrelevant.

> > It doesn't really hurt us that exceptions have polymorphism, but it
> > doesn't
> > generally help them do their job at all. If you're going to do anything
> > beyond simply print an error message, you need to know what the exception
> > type is and what data it has. And that's not OO at all.
> 
> Or you need to implement a key-value interface that allows printing of
> an elaborate error message.

You need to know the type regardless. And the information that an exception is 
going to have is very strongly tied to its type. I'd argue that in the general 
case, using a key-value interface is a huge step down from having the 
information be fields in the type that it goes with. It may help with printing 
elaborate error messages, and it would allow you to add information to an 
exception which wouldn't generally be there, but it helps little-to-none in 
actually handling exceptions and in fact makes it worse, because then you're 
moving what would be compilation errors to runtime.

It may be that the hashmap may be worth adding, but I'd consider it bad 
practice to use it when putting the variables in the type itself would work. 
It's only when you need to add information which wouldn't normally be in the 
exception that it makes much sense.

- Jonathan M Davis


More information about the Digitalmars-d mailing list