libexcs.tex 17.8 KB
Newer Older
1
\section{Built-in Exceptions}
2

3
\declaremodule{standard}{exceptions}
Andrew M. Kuchling's avatar
Andrew M. Kuchling committed
4
\modulesynopsis{Standard exception classes.}
5

6

7
Exceptions should be class objects.  
8 9
The exceptions are defined in the module \module{exceptions}.  This
module never needs to be imported explicitly: the exceptions are
10 11
provided in the built-in namespace as well as the \module{exceptions}
module.
12

13 14 15 16 17 18 19
\begin{notice}
In past versions of Python string exceptions were supported.  In
Python 1.5 and newer versions, all standard exceptions have been
converted to class objects and users are encouraged to do the same.
String exceptions will raise a \code{PendingDeprecationWarning}.
In future versions, support for string exceptions will be removed.

20 21 22 23 24 25
Two distinct string objects with the same value are considered 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.
26
\end{notice}
27

28 29 30 31 32 33
For class exceptions, in a \keyword{try}\stindex{try} statement with
an \keyword{except}\stindex{except} clause that mentions a particular
class, that clause also handles any exception classes derived from
that class (but not exception classes from which \emph{it} is
derived).  Two exception classes that are not related via subclassing
are never equivalent, even if they have the same name.
34 35 36 37 38 39

The built-in exceptions listed below 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).
40 41 42 43 44 45 46 47 48
The associated value is the second argument to the
\keyword{raise}\stindex{raise} statement.  For string exceptions, the
associated value itself will be stored in the variable named as the
second argument of the \keyword{except} clause (if any).  For class
exceptions, that variable receives the exception instance.  If the
exception class is derived from the standard root class
\exception{Exception}, the associated value is present as the
exception instance's \member{args} attribute, and possibly on other
attributes as well.
49 50

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

56 57 58 59 60 61 62
The built-in exception classes can be sub-classed to define new
exceptions; programmers are encouraged to at least derive new
exceptions from the \exception{Exception} base class.  More
information on defining exceptions is available in the
\citetitle[../tut/tut.html]{Python Tutorial} under the heading
``User-defined Exceptions.''

63
\setindexsubitem{(built-in exception base class)}
64 65

The following exceptions are only used as base classes for other
66
exceptions.
67 68 69 70

\begin{excdesc}{Exception}
The root class for exceptions.  All built-in exceptions are derived
from this class.  All user-defined exceptions should also be derived
Fred Drake's avatar
Fred Drake committed
71
from this class, but this is not (yet) enforced.  The \function{str()}
72 73
function, when applied to an instance of this class (or most derived
classes) returns the string value of the argument or arguments, or an
74 75
empty string if no arguments were given to the constructor.  When used
as a sequence, this accesses the arguments given to the constructor
76
(handy for backward compatibility with old code).  The arguments are
77
also available on the instance's \member{args} attribute, as a tuple.
78 79 80
\end{excdesc}

\begin{excdesc}{StandardError}
81
The base class for all built-in exceptions except
82 83
\exception{StopIteration} and \exception{SystemExit}.
\exception{StandardError} itself is derived from the root class
Fred Drake's avatar
Fred Drake committed
84
\exception{Exception}.
85 86 87 88
\end{excdesc}

\begin{excdesc}{ArithmeticError}
The base class for those built-in exceptions that are raised for
Fred Drake's avatar
Fred Drake committed
89 90
various arithmetic errors: \exception{OverflowError},
\exception{ZeroDivisionError}, \exception{FloatingPointError}.
91 92 93
\end{excdesc}

\begin{excdesc}{LookupError}
94
The base class for the exceptions that are raised when a key or
Fred Drake's avatar
Fred Drake committed
95
index used on a mapping or sequence is invalid: \exception{IndexError},
96 97
\exception{KeyError}.  This can be raised directly by
\function{sys.setdefaultencoding()}.
98 99
\end{excdesc}

100 101 102 103 104 105 106 107 108
\begin{excdesc}{EnvironmentError}
The base class for exceptions that
can occur outside the Python system: \exception{IOError},
\exception{OSError}.  When exceptions of this type are created with a
2-tuple, the first item is available on the instance's \member{errno}
attribute (it is assumed to be an error number), and the second item
is available on the \member{strerror} attribute (it is usually the
associated error message).  The tuple itself is also available on the
\member{args} attribute.
109
\versionadded{1.5.2}
110 111 112 113 114 115 116 117 118 119 120 121 122 123

When an \exception{EnvironmentError} exception is instantiated with a
3-tuple, the first two items are available as above, while the third
item is available on the \member{filename} attribute.  However, for
backwards compatibility, the \member{args} attribute contains only a
2-tuple of the first two constructor arguments.

The \member{filename} attribute is \code{None} when this exception is
created with other than 3 arguments.  The \member{errno} and
\member{strerror} attributes are also \code{None} when the instance was
created with other than 2 or 3 arguments.  In this last case,
\member{args} contains the verbatim constructor arguments as a tuple.
\end{excdesc}

124

125
\setindexsubitem{(built-in exception)}
126 127 128 129 130

The following exceptions are the exceptions that are actually raised.

\begin{excdesc}{AssertionError}
\stindex{assert}
131
Raised when an \keyword{assert} statement fails.
132
\end{excdesc}
133 134 135 136

\begin{excdesc}{AttributeError}
% xref to attribute reference?
  Raised when an attribute reference or assignment fails.  (When an
137
  object does not support attribute references or attribute assignments
Fred Drake's avatar
Fred Drake committed
138
  at all, \exception{TypeError} is raised.)
139 140 141 142
\end{excdesc}

\begin{excdesc}{EOFError}
% XXXJH xrefs here
Fred Drake's avatar
Fred Drake committed
143
  Raised when one of the built-in functions (\function{input()} or
144
  \function{raw_input()}) hits an end-of-file condition (\EOF) without
145 146
  reading any data.
% XXXJH xrefs here
Fred Drake's avatar
Fred Drake committed
147
  (N.B.: the \method{read()} and \method{readline()} methods of file
148
  objects return an empty string when they hit \EOF.)
149 150
\end{excdesc}

151
\begin{excdesc}{FloatingPointError}
Fred Drake's avatar
Fred Drake committed
152 153
  Raised when a floating point operation fails.  This exception is
  always defined, but can only be raised when Python is configured
154
  with the \longprogramopt{with-fpectl} option, or the
Fred Drake's avatar
Fred Drake committed
155
  \constant{WANT_SIGFPE_HANDLER} symbol is defined in the
156
  \file{pyconfig.h} file.
157 158
\end{excdesc}

159 160
\begin{excdesc}{IOError}
% XXXJH xrefs here
Fred Drake's avatar
Fred Drake committed
161 162 163 164
  Raised when an I/O operation (such as a \keyword{print} statement,
  the built-in \function{open()} function or a method of a file
  object) fails for an I/O-related reason, e.g., ``file not found'' or
  ``disk full''.
165

166
  This class is derived from \exception{EnvironmentError}.  See the
Fred Drake's avatar
Fred Drake committed
167 168
  discussion above for more information on exception instance
  attributes.
169 170 171 172
\end{excdesc}

\begin{excdesc}{ImportError}
% XXXJH xref to import statement?
Fred Drake's avatar
Fred Drake committed
173
  Raised when an \keyword{import} statement fails to find the module
174
  definition or when a \code{from \textrm{\ldots} import} fails to find a
175 176 177 178 179 180 181
  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
Fred Drake's avatar
Fred Drake committed
182
  plain integer, \exception{TypeError} is raised.)
183 184 185 186 187 188 189 190 191 192
\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
193
  \kbd{Control-C} or \kbd{Delete}).  During execution, a check for
194
  interrupts is made regularly.
195
% XXXJH xrefs here
196
  Interrupts typed when a built-in function \function{input()} or
197
  \function{raw_input()} is waiting for input also raise this
198
  exception.
199 200 201 202 203 204 205
\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
206
  (C's \cfunction{malloc()} function), the interpreter may not
Fred Drake's avatar
Fred Drake committed
207 208 209
  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.
210 211 212 213
\end{excdesc}

\begin{excdesc}{NameError}
  Raised when a local or global name is not found.  This applies only
214 215
  to unqualified names.  The associated value is an error message that
  includes the name that could not be found.
216
\end{excdesc}
217

218 219 220 221
\begin{excdesc}{NotImplementedError}
  This exception is derived from \exception{RuntimeError}.  In user
  defined base classes, abstract methods should raise this exception
  when they require derived classes to override the method.
222
  \versionadded{1.5.2}
223 224
\end{excdesc}

225 226
\begin{excdesc}{OSError}
  %xref for os module
227
  This class is derived from \exception{EnvironmentError} and is used
228
  primarily as the \refmodule{os} module's \code{os.error} exception.
229 230
  See \exception{EnvironmentError} above for a description of the
  possible associated values.
231
  \versionadded{1.5.2}
232
\end{excdesc}
233 234 235 236 237

\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
Fred Drake's avatar
Fred Drake committed
238
  raise \exception{MemoryError} than give up).  Because of the lack of
239
  standardization of floating point exception handling in C, most
240 241 242 243 244
  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}

245 246 247 248 249 250 251 252 253 254 255
\begin{excdesc}{ReferenceError}
  This exception is raised when a weak reference proxy, created by the
  \function{\refmodule{weakref}.proxy()} function, is used to access
  an attribute of the referent after it has been garbage collected.
  For more information on weak references, see the \refmodule{weakref}
  module.
  \versionadded[Previously known as the
                \exception{\refmodule{weakref}.ReferenceError}
                exception]{2.2}
\end{excdesc}

256 257 258
\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
259 260 261
  precisely went wrong.  (This exception is mostly a relic from a
  previous version of the interpreter; it is not used very much any
  more.)
262 263
\end{excdesc}

264 265 266 267 268 269
\begin{excdesc}{StopIteration}
  Raised by an iterator's \method{next()} method to signal that there
  are no further values.
  This is derived from \exception{Exception} rather than
  \exception{StandardError}, since this is not considered an error in
  its normal application.
270
  \versionadded{2.2}
271 272
\end{excdesc}

273 274 275
\begin{excdesc}{SyntaxError}
% XXXJH xref to these functions?
  Raised when the parser encounters a syntax error.  This may occur in
Fred Drake's avatar
Fred Drake committed
276 277
  an \keyword{import} statement, in an \keyword{exec} statement, in a call
  to the built-in function \function{eval()} or \function{input()}, or
278 279
  when reading the initial script or standard input (also
  interactively).
280

281
  Instances of this class have attributes \member{filename},
282 283 284
  \member{lineno}, \member{offset} and \member{text} for easier access
  to the details.  \function{str()} of the exception instance returns
  only the message.
285 286 287 288 289 290 291 292 293
\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
294
  interpreter.  Be sure to report the version of the Python
295 296 297 298 299 300 301 302
  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?
Fred Drake's avatar
Fred Drake committed
303
  This exception is raised by the \function{sys.exit()} function.  When it
304 305
  is not handled, the Python interpreter exits; no stack traceback is
  printed.  If the associated value is a plain integer, it specifies the
306
  system exit status (passed to C's \cfunction{exit()} function); if it is
307 308
  \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.
309

310 311 312 313 314
  Instances have an attribute \member{code} which is set to the
  proposed exit status or error message (defaulting to \code{None}).
  Also, this exception derives directly from \exception{Exception} and
  not \exception{StandardError}, since it is not technically an error.

Fred Drake's avatar
Fred Drake committed
315 316
  A call to \function{sys.exit()} is translated into an exception so that
  clean-up handlers (\keyword{finally} clauses of \keyword{try} statements)
317
  can be executed, and so that a debugger can execute a script without
Fred Drake's avatar
Fred Drake committed
318
  running the risk of losing control.  The \function{os._exit()} function
319
  can be used if it is absolutely positively necessary to exit
320 321
  immediately (for example, in the child process after a call to
  \function{fork()}).
322 323 324
\end{excdesc}

\begin{excdesc}{TypeError}
325
  Raised when an operation or function is applied to an object
326 327 328 329
  of inappropriate type.  The associated value is a string giving
  details about the type mismatch.
\end{excdesc}

330 331 332 333
\begin{excdesc}{UnboundLocalError}
  Raised when a reference is made to a local variable in a function or
  method, but no value has been bound to that variable.  This is a
  subclass of \exception{NameError}.
334
\versionadded{2.0}
335 336
\end{excdesc}

337 338 339
\begin{excdesc}{UnicodeError}
  Raised when a Unicode-related encoding or decoding error occurs.  It
  is a subclass of \exception{ValueError}.
340
\versionadded{2.0}
341 342
\end{excdesc}

343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
\begin{excdesc}{UnicodeEncodeError}
  Raised when a Unicode-related error occurs during encoding.  It
  is a subclass of \exception{UnicodeError}.
\versionadded{2.3}
\end{excdesc}

\begin{excdesc}{UnicodeDecodeError}
  Raised when a Unicode-related error occurs during decoding.  It
  is a subclass of \exception{UnicodeError}.
\versionadded{2.3}
\end{excdesc}

\begin{excdesc}{UnicodeTranslateError}
  Raised when a Unicode-related error occurs during translating.  It
  is a subclass of \exception{UnicodeError}.
\versionadded{2.3}
\end{excdesc}

361 362 363 364
\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
Fred Drake's avatar
Fred Drake committed
365
  \exception{IndexError}.
366 367
\end{excdesc}

368 369 370 371 372 373 374
\begin{excdesc}{WindowsError}
  Raised when a Windows-specific error occurs or when the error number
  does not correspond to an \cdata{errno} value.  The
  \member{errno} and \member{strerror} values are created from the
  return values of the \cfunction{GetLastError()} and
  \cfunction{FormatMessage()} functions from the Windows Platform API.
  This is a subclass of \exception{OSError}.
375
\versionadded{2.0}
376 377
\end{excdesc}

378 379 380 381 382
\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}
383 384


385
\setindexsubitem{(built-in warning)}
386 387

The following exceptions are used as warning categories; see the
388
\refmodule{warnings} module for more information.
389 390 391 392 393 394 395 396 397 398 399 400 401

\begin{excdesc}{Warning}
Base class for warning categories.
\end{excdesc}

\begin{excdesc}{UserWarning}
Base class for warnings generated by user code.
\end{excdesc}

\begin{excdesc}{DeprecationWarning}
Base class for warnings about deprecated features.
\end{excdesc}

402 403 404 405
\begin{excdesc}{PendingDeprecationWarning}
Base class for warnings about features which will be deprecated in the future.
\end{excdesc}

406 407 408 409 410 411 412
\begin{excdesc}{SyntaxWarning}
Base class for warnings about dubious syntax
\end{excdesc}

\begin{excdesc}{RuntimeWarning}
Base class for warnings about dubious runtime behavior.
\end{excdesc}
413

414 415 416 417 418
\begin{excdesc}{FutureWarning}
Base class for warnings about constructs that will change semantically
in the future.
\end{excdesc}

Fred Drake's avatar
Fred Drake committed
419
The class hierarchy for built-in exceptions is:
420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451

\begin{verbatim}
    Exception
     +-- SystemExit
     +-- StopIteration
     +-- StandardError
     |    +-- KeyboardInterrupt
     |    +-- ImportError
     |    +-- EnvironmentError
     |    |    +-- IOError
     |    |    +-- OSError
     |    |         +-- WindowsError
     |    +-- EOFError
     |    +-- RuntimeError
     |    |    +-- NotImplementedError
     |    +-- NameError
     |    |    +-- UnboundLocalError
     |    +-- AttributeError
     |    +-- SyntaxError
     |    |    +-- IndentationError
     |    |         +-- TabError
     |    +-- TypeError
     |    +-- AssertionError
     |    +-- LookupError
     |    |    +-- IndexError
     |    |    +-- KeyError
     |    +-- ArithmeticError
     |    |    +-- OverflowError
     |    |    +-- ZeroDivisionError
     |    |    +-- FloatingPointError
     |    +-- ValueError
     |    |    +-- UnicodeError
452 453 454
     |    |        +-- UnicodeEncodeError
     |    |        +-- UnicodeDecodeError
     |    |        +-- UnicodeTranslateError
455 456 457 458 459 460
     |    +-- ReferenceError
     |    +-- SystemError
     |    +-- MemoryError
     +---Warning
	  +-- UserWarning
	  +-- DeprecationWarning
461
	  +-- PendingDeprecationWarning
462
	  +-- SyntaxWarning
463
	  +-- OverflowWarning (not generated in 2.4; won't exist in 2.5)
464
	  +-- RuntimeWarning
465
	  +-- FutureWarning
466
\end{verbatim}