Program logic bugs vs input/environmental errors

Walter Bright via Digitalmars-d digitalmars-d at puremagic.com
Sat Oct 18 10:54:51 PDT 2014


On 10/18/2014 9:01 AM, Sean Kelly wrote:
> So you consider the library interface to be user input?

The library designer has to make that decision, not the language.


> What about calls that are used internally but also exposed as part of the library interface?

The library designer has to make a decision about who's job it is to validate 
the parameters to an interface, and thereby deciding what are 
input/environmental errors and what are programming bugs.

Avoiding making this decision means the API is underspecified, and we all know 
how poorly that works.

Consider:

     /******************************
      * foo() does magical things.
      * Parameters:
      *   x   a value that must be greater than 0 and less than 8
      *   y   a positive integer
      * Throws:
      *   Exception if y is negative
      * Returns:
      *   magic value
      */
     int foo(int x, int y)
     in { assert(x > 0 && x < 8); }
     body {
        enforce(y >= 0, "silly rabbit, y should be positive");
        ... return ...;
     }




More information about the Digitalmars-d mailing list