Exceptions are a means of breaking out of the normal flow of control of a code block in
order to handle errors or other exceptional conditions. An exception is raised
at the point where the error is detected; it may be handled
by the surrounding code block or by any code block that directly or indirectly invoked
the code block where the error occurred.
The Python interpreter raises an exception when it detects a run-time error (such as
division by zero). A Python program can also explicitly raise an exception with the raise statement. Exception handlers are specified with the try ... except statement. The try ... finally statement specifies cleanup
code which does not handle the exception, but is executed whether an exception occurred or
not in the preceding code.
Python uses the ``termination''
model of error handling: an exception handler can find out what happened and continue
execution at an outer level, but it cannot repair the cause of the error and retry the
failing operation (except by re-entering the offending piece of code from the top).
When an exception is not handled at all, the interpreter terminates execution of the
program, or returns to its interactive main loop. In either case, it prints a stack
backtrace, except when the exception is SystemExit
Exceptions are identified by class instances. Selection of a matching except clause is
based on object identity. The except clause must reference the
same class or a base class of it.
When an exception is raised, an object (maybe
None) is passed as the
exception's value; this object does not affect the selection of an exception
handler, but is passed to the selected exception handler as additional information. For
class exceptions, this object must be an instance of the exception class being raised.
Warning: Messages to exceptions are not part of the Python API.
Their contents may change from one version of Python to the next without warning and
should not be relied on by code which will run under multiple versions of the
See also the description of the try statement in section 7.4 and raise statement in section 6.9.