assert vs enforce?

Robert Clipsham robert at
Sat Jan 22 16:38:54 PST 2011

On 23/01/11 00:33, Sean Eskapp wrote:
> What's the difference between assert and enforce in D?

Use assert() for something that must almost be true, regardless of user 
input, or anything else.

enforce() on the other hand is for things which may or may not be true. 
The source code should clear things up:
T enforce(T)(T value, lazy Throwable ex)
     if (!value) throw ex();
     return value;
So it's essentially just shorthand for throwing an exception.

void main(string[] args)
     enforce(args.length > 2, "The user needs to pass the correct 
     assert(1+1==2, "If this isn't true, the application should terminate");


More information about the Digitalmars-d-learn mailing list