mirror of https://github.com/python/cpython
173 lines
7.2 KiB
TeX
173 lines
7.2 KiB
TeX
\section{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.
|
|
|
|
\renewcommand{\indexsubitem}{(built-in exception)}
|
|
|
|
\begin{excdesc}{AttributeError}
|
|
% xref to attribute reference?
|
|
Raised when an attribute reference or assignment fails. (When an
|
|
object does not support attributes references or attribute assignments
|
|
at all, \code{TypeError} is raised.)
|
|
\end{excdesc}
|
|
|
|
\begin{excdesc}{EOFError}
|
|
% XXXJH xrefs here
|
|
Raised when one of the built-in functions (\code{input()} or
|
|
\code{raw_input()}) hits an end-of-file condition (\EOF{}) without
|
|
reading any data.
|
|
% XXXJH xrefs here
|
|
(N.B.: the \code{read()} and \code{readline()} methods of file
|
|
objects return an empty string when they hit \EOF{}.) No associated value.
|
|
\end{excdesc}
|
|
|
|
\begin{excdesc}{IOError}
|
|
% XXXJH xrefs here
|
|
Raised when an I/O operation (such as a \code{print} statement, the
|
|
built-in \code{open()} function or a method of a file object) fails
|
|
for an I/O-related reason, e.g., `file not found', `disk full'.
|
|
\end{excdesc}
|
|
|
|
\begin{excdesc}{ImportError}
|
|
% XXXJH xref to import statement?
|
|
Raised when an \code{import} statement fails to find the module
|
|
definition or when a \code{from {\rm \ldots} import} fails to find a
|
|
name that is to be imported.
|
|
\end{excdesc}
|
|
|
|
\begin{excdesc}{IndexError}
|
|
% XXXJH xref to sequences
|
|
Raised when a sequence subscript is out of range. (Slice indices are
|
|
silently truncated to fall in the allowed range; if an index is not a
|
|
plain integer, \code{TypeError} is raised.)
|
|
\end{excdesc}
|
|
|
|
\begin{excdesc}{KeyError}
|
|
% XXXJH xref to mapping objects?
|
|
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 (normally
|
|
\kbd{Control-C} or
|
|
\key{DEL}). During execution, a check for interrupts is made regularly.
|
|
% XXXJH xrefs here
|
|
Interrupts typed when a built-in function \code{input()} or
|
|
\code{raw_input()}) is waiting for input also raise this exception. No
|
|
associated value.
|
|
\end{excdesc}
|
|
|
|
\begin{excdesc}{MemoryError}
|
|
Raised when an operation runs out of memory but the situation may
|
|
still be rescued (by deleting some objects). The associated value is
|
|
a string indicating what kind of (internal) operation ran out of memory.
|
|
Note that because of the underlying memory management architecture
|
|
(\C{}'s \code{malloc()} function), the interpreter may not always be able
|
|
to completely recover from this situation; it nevertheless raises an
|
|
exception so that a stack traceback 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. This applies only
|
|
to unqualified names. The associated value is the name that could
|
|
not be found.
|
|
\end{excdesc}
|
|
|
|
\begin{excdesc}{OverflowError}
|
|
% XXXJH reference to long's and/or int's?
|
|
Raised when the result of an arithmetic operation is too large to be
|
|
represented. This cannot occur for long integers (which would rather
|
|
raise \code{MemoryError} than give up). Because of the lack of
|
|
standardization of floating point exception handling in \C{}, most
|
|
floating point operations also aren't checked. For plain integers,
|
|
all operations that can overflow are checked except left shift, where
|
|
typical applications prefer to drop bits than raise an exception.
|
|
\end{excdesc}
|
|
|
|
\begin{excdesc}{RuntimeError}
|
|
Raised when an error is detected that doesn't fall in any of the
|
|
other categories. The associated value is a string indicating what
|
|
precisely went wrong. (This exception is a relic from a previous
|
|
version of the interpreter; it is not used any more except by some
|
|
extension modules that haven't been converted to define their own
|
|
exceptions yet.)
|
|
\end{excdesc}
|
|
|
|
\begin{excdesc}{SyntaxError}
|
|
% XXXJH xref to these functions?
|
|
Raised when the parser encounters a syntax error. This may occur in
|
|
an \code{import} statement, in an \code{exec} statement, in a call
|
|
to the built-in function \code{eval()} or \code{input()}, or
|
|
when reading the initial script or standard input (also
|
|
interactively).
|
|
\end{excdesc}
|
|
|
|
\begin{excdesc}{SystemError}
|
|
Raised when the interpreter finds an internal error, but the
|
|
situation does not look so serious to cause it to abandon all hope.
|
|
The associated value is a string indicating what went wrong (in
|
|
low-level terms).
|
|
|
|
You should report this to the author or maintainer of your Python
|
|
interpreter. Be sure to report the version string of the Python
|
|
interpreter (\code{sys.version}; it is also printed at the start of an
|
|
interactive Python session), the exact error message (the exception's
|
|
associated value) and if possible the source of the program that
|
|
triggered the error.
|
|
\end{excdesc}
|
|
|
|
\begin{excdesc}{SystemExit}
|
|
% XXXJH xref to module sys?
|
|
This exception is raised by the \code{sys.exit()} function. When it
|
|
is not handled, the Python interpreter exits; no stack traceback is
|
|
printed. If the associated value is a plain integer, it specifies the
|
|
system exit status (passed to \C{}'s \code{exit()} function); if it is
|
|
\code{None}, the exit status is zero; if it has another type (such as
|
|
a string), the object's value is printed and the exit status is one.
|
|
|
|
A call to \code{sys.exit} is translated into an exception so that
|
|
clean-up handlers (\code{finally} clauses of \code{try} statements)
|
|
can be executed, and so that a debugger can execute a script without
|
|
running the risk of losing control. The \code{posix._exit()} function
|
|
can be used if it is absolutely positively necessary to exit
|
|
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 applied to an object
|
|
of inappropriate type. The associated value is a string giving
|
|
details about the type mismatch.
|
|
\end{excdesc}
|
|
|
|
\begin{excdesc}{ValueError}
|
|
Raised when a built-in operation or function receives an argument
|
|
that has the right type but an inappropriate value, and the
|
|
situation is not described by a more precise exception such as
|
|
\code{IndexError}.
|
|
\end{excdesc}
|
|
|
|
\begin{excdesc}{ZeroDivisionError}
|
|
Raised when the second argument of a division or modulo operation is
|
|
zero. The associated value is a string indicating the type of the
|
|
operands and the operation.
|
|
\end{excdesc}
|