spir <[email protected]> wrote:

Hello,

The reference states:

ThrowStatement:
        throw Expression ;
Expression is evaluated and must be an Object reference. The Object reference is thrown as an exception.
        throw new Exception("message");

The example uses an Excpetion type, but the somewhat comment contradicts it. Can one really use any kind of object as exception?

Absolutely. It is however heavily discouraged.


How does D then handle it?

The way it does any other exception. You may catch it using
catch(Object o).


I was expecting (from exp with other language) there to be a root Error or Exception type implementating base exception mechanics and/or an imposed interface to comply with (esp a kind of string method returning what text to write out when the exception is not caught).
How does this work, and how to use it concretely?

There is a base class Exception and Error, as well as the base interface
Throwable, which the aforementioned implement. Using this is more of a
convention than absolute necessity, but it is used all over Phobos and
druntime, and it is heavily discouraged not to use those as bases.

On a sidenote, one should usually only catch Exceptions, not Errors, as
the latter is supposed to be used for non-recoverable errors.

--
Simen

Reply via email to