[Python-Dev] When to signal an error
Jason Orendorff
jason@jorendorff.com
Sat, 19 Jan 2002 17:34:12 -0600
Guido van Rossum wrote:
> Jason Orendorff wrote:
> > At runtime, Python tends to complain about iffy situations,
> > even situations that other languages might silently accept.
>
> "Other languages" being Perl or JavaScript? The situations you show
> here would all be errors in most languages that are compiled to
> machine code.
>
> > For example:
> > print 50 + " percent" # TypeError
> > x = [1, 2, 3]; x.remove(4) # ValueError
> > x = {}; print x[3] # KeyError
> > a, b = "x,y,z,z,y".split() # ValueError
> > x.append(1, 2) # TypeError, recently
> > print u"\N{EURO SIGN}" # UnicodeError
Not to bicker, but Java only manages to reject 2 of the 6,
both at compile time. The other 4 silently pass through the
standard library without complaint. None cause exceptions
during execution.
ML makes no distinction between append(1, 2) and append((1, 2)),
but that's a syntax thing... C++ STL remove() doesn't complain
if it doesn't find anything to remove; nor does the C++
map<>::operator[]() complain if no entry exists.
> > I'm not complaining. I like the pickiness.
>
> That's why you're using Python. :-)
(laugh) You sell yourself short, Guido. :) I would still use
Python even if (50 + " percent") started evaluating to
"50 percent" tomorrow.
## Jason Orendorff http://www.jorendorff.com/