Exception Idioms
We’ve seen the mechanics behind exceptions; now, let’s take look at some of the ways they’re typically used.
Exceptions Aren’t Always a Bad Thing
Python raises exceptions on errors, but not all exceptions are
errors. For instance, we saw in Chapter 2, that
file object read methods return empty strings at
the end of a file. Python also provides a built-in function called
raw_input
for reading from the standard input stream; unlike file methods,
raw_input raises the built-in
EOFError at end of file, instead of returning an
empty string (an empty string means an empty line when
raw_input is used). Because of that,
raw_input often appears wrapped in a
try handler and nested in a loop, as in the
following code
while 1:
try:
line = raw_input() # read line from stdin
except EOFError:
break # exit loop at end of file
else:
Process next 'line' hereSearches Sometimes Signal Success by raise
User-defined exceptions can signal nonerror conditions also. For
instance, a search routine can be coded to raise
an exception when a match is found, instead of returning a status
flag that must be interpreted by the caller. In the following, the
try/except/else exception handler does the work of
an if/else return value tester:
Found = "Item found"
def searcher():
raise Found or returntry:
searcher()
except Found: # exception if item was found
Successelse: # else returned: not found
FailureOuter try Statements Can Debug Code
You can also make use of exception handlers to replace Python’s ...