Comparison with False - something I don't understand

Terry Reedy tjreedy at udel.edu
Sat Dec 4 19:53:00 EST 2010


On 12/4/2010 12:07 PM, Harishankar wrote:

> Of course not. But going by the replies here, it appears that Python has
> made exceptions as the "norm" for error handling which is ironical
> considering the meaning of the word "exception".

In communications parlance, 'exception' = out-of-band signal or return 
value, while 'return'ed value = in-band signal. A fake in-band return 
value, like returning None (ok) or False (worse) to *signal* 'I cannot 
return a list' is still an exception signal, even if 'in-band'.

The advantage of out-of-band signals is that they cannot be mistaken for 
valid in-band signals (return values). If a caller neglects to catch an 
exception, the process stops, as it should. If a caller neglects to 
check return values, the process goes on (at least for a while) under 
the pretense that error codes (in-band exception signals) are valid 
return values.

Neglecting to check return values for error codes is a common bug in C 
code. At worst, the process eventually return a bad value or performs a 
bad action. At best, it crashes sometime later, making the bug hard to find.

Or a function is called without even storing, let alone checking the 
return value. This is common for i/o functions. A program may 'finish' 
without any indication that it failed. If one does the same with Python 
functions (equally common), any exceptions *will* be passed up until 
either caught or displayed on the screen with an informative traceback 
(assuming that the screen is the not source of the error).

-- 
Terry Jan Reedy




More information about the Python-list mailing list