Revision 7 as of 2003-11-22 00:02:44

Clear message

Handling Exceptions

The simplest way to handle exceptions is with a "try-except" block:

   1 (x,y) = (5,0)
   2 try:
   3   z = x/y
   4 except ZeroDivisionError:
   5   print "divide by zero"

If you wanted to examine the exception from code, you could have:

   1 (x,y) = (5,0)
   2 try:
   3   z = x/y
   4 except ZeroDivisionError, e:
   5   z = e # representation: "<exceptions.ZeroDivisionError instance at 0x817426c>"
   6 print z # output: "integer division or modulo by zero"

This page previously used a catch-all exception clause:

   1 (x,y) = (5,0)
   2 try:
   3   z = x/y
   4 except:
   5   print "divide by zero"

This is bad because you'll almost certainly catch too many errors. As a simple example, when the user presses Ctrl-C, thus generating a KeyboardInterrupt, it will be caught and the code above will print "divide by zero". Now that's confusing, so you should only CatchWhatYouCanHandle.

To Write About...

Give example of IOError, and interpreting the IOError code.

Give example of multiple excepts. Handling multiple excepts in one line.

Show how to use "else" and "finally".

Show how to continue with a "raise".

See Also:

WritingExceptionClasses, TracebackModule, CoupleLeapingWithLooking

Unable to edit the page? See the FrontPage for instructions.