Built-in Exceptions

Exceptions are string objects. Two distinct string objects with the same value are different exceptions. This is done to force programmers to use exception names rather than their string value when specifying exception handlers. The string value of all built-in exceptions is their name, but this is not a requirement for user-defined exceptions or exceptions defined by library modules.

The following exceptions can be generated by the interpreter or built-in functions. Except where mentioned, they have an `associated value' indicating the detailed cause of the error. This may be a string or a tuple containing several items of information (e.g., an error code and a string explaining the code).

User code can raise built-in exceptions. This can be used to test an exception handler or to report an error condition `just like' the situation in which the interpreter raises the same exception; but beware that there is nothing to prevent user code from raising an inappropriate error.


\begin{excdesc}{AttributeError}
Raised when an attribute reference or assignment...
...ces or attribute assignments
at all, \code{TypeError} is raised.)
\end{excdesc}


\begin{excdesc}{EOFError}
Raised when one of the built-in functions (\code{input...
...return an empty string when they hit \EOF{}.) No associated value.
\end{excdesc}


\begin{excdesc}{IOError}
Raised when an I/O operation (such as a \code{print} st...
...s
for an I/O-related reason, e.g., \lq file not found', \lq disk full'.
\end{excdesc}


\begin{excdesc}{ImportError}
Raised when an \code{import} statement fails to fin...
... {\rm\ldots} import} fails to find a
name that is to be imported.
\end{excdesc}


\begin{excdesc}{IndexError}
Raised when a sequence subscript is out of range. (S...
... if an index is not a
plain integer, \code{TypeError} is raised.)
\end{excdesc}


\begin{excdesc}{KeyError}
Raised when a mapping (dictionary) key is not found in the set of
existing keys.
\end{excdesc}


\begin{excdesc}{KeyboardInterrupt}
Raised when the user hits the interrupt key ...
...waiting for input also raise this exception. No
associated value.
\end{excdesc}


\begin{excdesc}{MemoryError}
Raised when an operation runs out of memory but th...
...aceback can be printed, in case a run-away
program was the cause.
\end{excdesc}


\begin{excdesc}{NameError}
Raised when a local or global name is not found. Thi...
... names. The associated value is the name that could
not be found.
\end{excdesc}


\begin{excdesc}{OverflowError}
Raised when the result of an arithmetic operation...
... typical applications prefer to drop bits than raise an exception.
\end{excdesc}


\begin{excdesc}{RuntimeError}
Raised when an error is detected that doesn't fal...
... that haven't been converted to define their own
exceptions yet.)
\end{excdesc}


\begin{excdesc}{SyntaxError}
Raised when the parser encounters a syntax error. T...
...eading the initial script or standard input (also
interactively).
\end{excdesc}


\begin{excdesc}{SystemError}
Raised when the interpreter finds an internal erro...
...d if possible the source of the program that
triggered the error.
\end{excdesc}


\begin{excdesc}{SystemExit}
This exception is raised by the \code{sys.exit()} fu...
...t
immediately (e.g., after a \code{fork()} in the child process).
\end{excdesc}


\begin{excdesc}{TypeError}
Raised when a built-in operation or function is appl...
...ociated value is a string giving
details about the type mismatch.
\end{excdesc}


\begin{excdesc}{ValueError}
Raised when a built-in operation or function receiv...
... described by a more precise exception such as
\code{IndexError}.
\end{excdesc}


\begin{excdesc}{ZeroDivisionError}
Raised when the second argument of a divisio...
...s a string indicating the type of the
operands and the operation.
\end{excdesc}