On 10/6/14, 4:46 PM, Jeremy Powers via Digitalmars-d wrote:
On Mon, Oct 6, 2014 at 7:50 AM, Andrei Alexandrescu via Digitalmars-d
    I'm thinking a simple key-value store Variant[string] would
    accommodate any state needed for differentiating among exception
    kinds whenever that's necessary.


And 'kinds' is a synonym for 'types' - You can have different kinds of
problems, so you raise them with different kinds of exceptions.

s/kind/type/g and the question is: why not leverage the type system?

I've used "kinds" intentionally there. My basic thesis here is I haven't seen any systematic and successful use of exception hierarchies in 20 years. In rare scattered cases I've seen a couple of multiple "catch"es, and even those could have been helped by the use of a more flat handling. You'd think in 20 years some good systematic use of the feature would come forward. It's probably time to put exception hierarchies in the "emperor's clothes" bin.

For a consumer-of-something-that-throws, having different types of
exceptions for different things with different data makes sense.  You
have to switch on something to determine what data you can get from the
exception anyway.

Oh yah I know the theory. It's beautiful.

    It's commonly accepted that the usability scope of OOP has gotten
    significantly narrower since its heydays. However, surprisingly, the
    larger community hasn't gotten to the point to scrutinize
    object-oriented error handling, which as far as I can tell has never
    delivered.


Maybe, but what fits better?  Errors/Exceptions have an inherent
hierarchy, which maps well to a hierarchy of types.  When catching an
Exception, you want to guarantee you only catch the kinds (types) of
things you are looking for, and nothing else.

Yah, it's just that most/virtually all of the time I'm looking for all. And nothing else :o).


Andrei

Reply via email to