Nothrow functions

Janderson ask at me.com
Wed Oct 1 23:18:48 PDT 2008


Andrei Alexandrescu wrote:
> dsimcha wrote:
>> == Quote from Janderson (ask at me.com)'s article
>>> Walter Bright wrote:
>> http://www.reddit.com/r/programming/comments/74fx4/nothrow_functions_in_the_d_programming_language/ 
>>
>>> Perhaps now constructors can enforce no-throw.  Functions that have
>>> throw would have to be handled in that constructor.  Of course we could
>>> always do this manually, but it might be worth considering making on by
>>> default for constructors.
>>> -Joel
>>
>> Please, please, please, please, *please* no!!!  Anything that is in 
>> any way
>> similar to checked exception Hell in Java does not belong in D.  
>> Nothrow is a
>> great feature precisely because, by being a contract that is only 
>> enforced when
>> the programmer explicitly asks for it to be, it can be simply ignored 
>> in places
>> where one doesn't want to use it.  Making nothrow the default in 
>> constructors
>> really smacks of Java-style bondage and discipline, and a major reason 
>> why I use D
>> is to avoid such things.  If nothrow is the default *anywhere*, it 
>> will lead to
>> aggravation and error swallowing similar to Java's checked exceptions.
> 
> I agree. Bondage and discipline, heh :o). I'm actually surprised at the 
> desire of making most constructors nothrow. Why?
> 
> Andrei

If an exception fires during the construction of an object and you don't 
handle it your left with a partially formed object.  It becomes 
difficult to then make that object an invariant.  This is particularly 
bad when it occurs in the base classes constructor.

-Joel



More information about the Digitalmars-d mailing list