On Mon, Sep 29, 2014 at 8:13 AM, Steven Schveighoffer via Digitalmars-d <
digitalmars-d@puremagic.com> wrote:

> The largest issue I see with this whole scheme is that exceptions can be
> turned into errors, but not the reverse. Once an error is thrown, it's
> pretty much game over. So defensive coding would suggest when you don't
> know the answer, throw an exception, and something higher up would say "Oh,
> that is really a program error, rethrowing"
>
> But expecting developers to do this at EVERY CALL is really impossible.
>

And this is an argument for checked exceptions - being able to explicitly
state 'these are known fatal cases for this component, you should deal with
them appropriately' when defining a method.  Cuts down the catch/check to
just the common cases, and makes such cases explicit to the caller.
Anything not a checked exception falls into the 'error, abort!' path.
 (Memory corruption etc. being abort scenarios)

If I really needed to write a robust program in D right now, I would
(attempt) to wrap every call in a try/catch, and check if the thrown
exception was of a handleable type.  But knowing which types for which
methods would lead me to basically hacking up some documentation-enforced
checked exceptions, and being entirely unmaintainable.

Reply via email to