exception types & objects

Simen kjaeraas simen.kjaras at gmail.com
Tue Oct 19 05:52:20 PDT 2010

spir <denis.spir at gmail.com> 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.


More information about the Digitalmars-d-learn mailing list