On Feb 20, 2012, at 7:49 AM, Andrei Alexandrescu 
<[email protected]> wrote:
> 
> Also, I think we can do better than defining the boilerplate constructor (see 
> e.g. https://github.com/D-Programming-Language/phobos/pull/439). It's just a 
> function. Consider:
> 
> // this goes in the stdlib
> void raise(ConcreteException)(string message, Throwable t = null, string f = 
> __FILE__, size_t l = __LINE__)
> {
>  auto r = new ConcreteException;
>  r.message = message;
>  r.file = f;
>  r.line = l;
>  r.next = t;
>  throw r;
> }
> 
> class AcmeException : Exception {}
> 
> Now whenever you want to raise AcmeException, you say 
> raise!AcmeException("message"). Also, raise may accept additional data that 
> fills the Variant[string]. That makes exception definitions one-liners. 

What is gained here over the current approach:

throw new AcmeException("message");

Just eliminate the need for the ctor definition in the exception class?

Reply via email to