On 4/2/2013 1:00 PM, Lars T. Kyllingstad wrote:
I definitely don't think we need an IllegalArgumentException. IMO, passing
illegal arguments is 1) a simple programming error, in which case it should be
an Error, or 2) something the programmer can not avoid, in which case it
requires a better description of why things went wrong than just "illegal
argument".  "File not found", for example.

I didn't really consider contracts when I wrote the DIP, and of course there
will always be the problem of "should this be a contract or a normal input
check?"  The problem with contracts, though, is that they go away in release
mode, which is certainly not safe if that is your error handling mechanism.

A bit of philosophy here:

Contracts are not there to validate user input. They are only there to check for logic bugs in the program itself.

It's a very clear distinction, and should not be a problem.

To reiterate, if a contract fails, that is a BUG in the program, and the program is then considered to be in an undefined state and is not recoverable.

CONTRACTS ARE NOT AN ERROR HANDLING MECHANISM.

Reply via email to