blob: d6a64fc1b987c648fb3a3ac1c18700ba9334902d [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001.. _bltin-exceptions:
2
3Built-in Exceptions
4===================
5
6.. module:: exceptions
7 :synopsis: Standard exception classes.
8
9
10Exceptions should be class objects. The exceptions are defined in the module
11:mod:`exceptions`. This module never needs to be imported explicitly: the
12exceptions are provided in the built-in namespace as well as the
13:mod:`exceptions` module.
14
15.. index::
16 statement: try
17 statement: except
18
19For class exceptions, in a :keyword:`try` statement with an :keyword:`except`
20clause that mentions a particular class, that clause also handles any exception
21classes derived from that class (but not exception classes from which *it* is
22derived). Two exception classes that are not related via subclassing are never
23equivalent, even if they have the same name.
24
25.. index:: statement: raise
26
27The built-in exceptions listed below can be generated by the interpreter or
28built-in functions. Except where mentioned, they have an "associated value"
29indicating the detailed cause of the error. This may be a string or a tuple
30containing several items of information (e.g., an error code and a string
31explaining the code). The associated value is the second argument to the
32:keyword:`raise` statement. If the exception class is derived from the standard
33root class :exc:`BaseException`, the associated value is present as the
34exception instance's :attr:`args` attribute.
35
36User code can raise built-in exceptions. This can be used to test an exception
37handler or to report an error condition "just like" the situation in which the
38interpreter raises the same exception; but beware that there is nothing to
39prevent user code from raising an inappropriate error.
40
41The built-in exception classes can be sub-classed to define new exceptions;
42programmers are encouraged to at least derive new exceptions from the
43:exc:`Exception` class and not :exc:`BaseException`. More information on
44defining exceptions is available in the Python Tutorial under
45:ref:`tut-userexceptions`.
46
47The following exceptions are only used as base classes for other exceptions.
48
49
50.. exception:: BaseException
51
52 The base class for all built-in exceptions. It is not meant to be directly
53 inherited by user-defined classes (for that use :exc:`Exception`). If
54 :func:`str` or :func:`unicode` is called on an instance of this class, the
55 representation of the argument(s) to the instance are returned or the emptry
56 string when there were no arguments. All arguments are stored in :attr:`args`
57 as a tuple.
58
59 .. versionadded:: 2.5
60
61
62.. exception:: Exception
63
64 All built-in, non-system-exiting exceptions are derived from this class. All
65 user-defined exceptions should also be derived from this class.
66
67 .. versionchanged:: 2.5
68 Changed to inherit from :exc:`BaseException`.
69
70
71.. exception:: ArithmeticError
72
73 The base class for those built-in exceptions that are raised for various
74 arithmetic errors: :exc:`OverflowError`, :exc:`ZeroDivisionError`,
75 :exc:`FloatingPointError`.
76
77
78.. exception:: LookupError
79
80 The base class for the exceptions that are raised when a key or index used on a
81 mapping or sequence is invalid: :exc:`IndexError`, :exc:`KeyError`. This can be
82 raised directly by :func:`sys.setdefaultencoding`.
83
84
85.. exception:: EnvironmentError
86
87 The base class for exceptions that can occur outside the Python system:
88 :exc:`IOError`, :exc:`OSError`. When exceptions of this type are created with a
89 2-tuple, the first item is available on the instance's :attr:`errno` attribute
90 (it is assumed to be an error number), and the second item is available on the
91 :attr:`strerror` attribute (it is usually the associated error message). The
92 tuple itself is also available on the :attr:`args` attribute.
93
94 .. versionadded:: 1.5.2
95
96 When an :exc:`EnvironmentError` exception is instantiated with a 3-tuple, the
97 first two items are available as above, while the third item is available on the
98 :attr:`filename` attribute. However, for backwards compatibility, the
99 :attr:`args` attribute contains only a 2-tuple of the first two constructor
100 arguments.
101
102 The :attr:`filename` attribute is ``None`` when this exception is created with
103 other than 3 arguments. The :attr:`errno` and :attr:`strerror` attributes are
104 also ``None`` when the instance was created with other than 2 or 3 arguments.
105 In this last case, :attr:`args` contains the verbatim constructor arguments as a
106 tuple.
107
108The following exceptions are the exceptions that are actually raised.
109
110
111.. exception:: AssertionError
112
113 .. index:: statement: assert
114
115 Raised when an :keyword:`assert` statement fails.
116
117
118.. exception:: AttributeError
119
120 Raised when an attribute reference or assignment fails. (When an object does
121 not support attribute references or attribute assignments at all,
122 :exc:`TypeError` is raised.)
123
124 .. % xref to attribute reference?
125
126
127.. exception:: EOFError
128
129 Raised when attempting to read beyond the end of a file. (N.B.: the :meth:`read`
130 and :meth:`readline` methods of file objects return an empty string when they
131 hit EOF.)
132
133 .. % XXXJH xrefs here
134 .. % XXXJH xrefs here
135
136
137.. exception:: FloatingPointError
138
139 Raised when a floating point operation fails. This exception is always defined,
140 but can only be raised when Python is configured with the
141 :option:`--with-fpectl` option, or the :const:`WANT_SIGFPE_HANDLER` symbol is
142 defined in the :file:`pyconfig.h` file.
143
144
145.. exception:: GeneratorExit
146
147 Raise when a generator's :meth:`close` method is called.
148
149 .. versionadded:: 2.5
150
151 .. versionchanged:: 3.0
152 Changed to inherit from Exception instead of StandardError.
153
154
155.. exception:: IOError
156
157 Raised when an I/O operation (such as a :keyword:`print` statement, the built-in
158 :func:`open` function or a method of a file object) fails for an I/O-related
159 reason, e.g., "file not found" or "disk full".
160
161 .. % XXXJH xrefs here
162
163 This class is derived from :exc:`EnvironmentError`. See the discussion above
164 for more information on exception instance attributes.
165
166
167.. exception:: ImportError
168
169 Raised when an :keyword:`import` statement fails to find the module definition
170 or when a ``from ... import`` fails to find a name that is to be imported.
171
172 .. % XXXJH xref to import statement?
173
174
175.. exception:: IndexError
176
177 Raised when a sequence subscript is out of range. (Slice indices are silently
178 truncated to fall in the allowed range; if an index is not a plain integer,
179 :exc:`TypeError` is raised.)
180
181 .. % XXXJH xref to sequences
182
183
184.. exception:: KeyError
185
186 Raised when a mapping (dictionary) key is not found in the set of existing keys.
187
188 .. % XXXJH xref to mapping objects?
189
190
191.. exception:: KeyboardInterrupt
192
193 Raised when the user hits the interrupt key (normally :kbd:`Control-C` or
194 :kbd:`Delete`). During execution, a check for interrupts is made regularly. The
195 exception inherits from :exc:`BaseException` so as to not be accidentally caught
196 by code that catches :exc:`Exception` and thus prevent the interpreter from
197 exiting.
198
199 .. % XXX(hylton) xrefs here
200
201 .. versionchanged:: 2.5
202 Changed to inherit from :exc:`BaseException`.
203
204
205.. exception:: MemoryError
206
207 Raised when an operation runs out of memory but the situation may still be
208 rescued (by deleting some objects). The associated value is a string indicating
209 what kind of (internal) operation ran out of memory. Note that because of the
210 underlying memory management architecture (C's :cfunc:`malloc` function), the
211 interpreter may not always be able to completely recover from this situation; it
212 nevertheless raises an exception so that a stack traceback can be printed, in
213 case a run-away program was the cause.
214
215
216.. exception:: NameError
217
218 Raised when a local or global name is not found. This applies only to
219 unqualified names. The associated value is an error message that includes the
220 name that could not be found.
221
222
223.. exception:: NotImplementedError
224
225 This exception is derived from :exc:`RuntimeError`. In user defined base
226 classes, abstract methods should raise this exception when they require derived
227 classes to override the method.
228
229 .. versionadded:: 1.5.2
230
231
232.. exception:: OSError
233
234 This class is derived from :exc:`EnvironmentError` and is used primarily as the
235 :mod:`os` module's ``os.error`` exception. See :exc:`EnvironmentError` above for
236 a description of the possible associated values.
237
238 .. % xref for os module
239
240 .. versionadded:: 1.5.2
241
242
243.. exception:: OverflowError
244
245 Raised when the result of an arithmetic operation is too large to be
246 represented. This cannot occur for long integers (which would rather raise
247 :exc:`MemoryError` than give up). Because of the lack of standardization of
248 floating point exception handling in C, most floating point operations also
249 aren't checked. For plain integers, all operations that can overflow are
250 checked except left shift, where typical applications prefer to drop bits than
251 raise an exception.
252
253 .. % XXXJH reference to long's and/or int's?
254
255
256.. exception:: ReferenceError
257
258 This exception is raised when a weak reference proxy, created by the
259 :func:`weakref.proxy` function, is used to access an attribute of the referent
260 after it has been garbage collected. For more information on weak references,
261 see the :mod:`weakref` module.
262
263 .. versionadded:: 2.2
264 Previously known as the :exc:`weakref.ReferenceError` exception.
265
266
267.. exception:: RuntimeError
268
269 Raised when an error is detected that doesn't fall in any of the other
270 categories. The associated value is a string indicating what precisely went
271 wrong. (This exception is mostly a relic from a previous version of the
272 interpreter; it is not used very much any more.)
273
274
275.. exception:: StopIteration
276
277 Raised by builtin :func:`next` and an iterator's :meth:`__next__` method to
278 signal that there are no further values.
279
280 .. versionadded:: 2.2
281
282 .. versionchanged:: 3.0
283 Changed to inherit from Exception instead of StandardError.
284
285
286.. exception:: SyntaxError
287
288 Raised when the parser encounters a syntax error. This may occur in an
289 :keyword:`import` statement, in a call to the built-in functions :func:`exec`
290 or :func:`eval`, or when reading the initial script or standard input
291 (also interactively).
292
293 .. % XXXJH xref to these functions?
294
295 Instances of this class have attributes :attr:`filename`, :attr:`lineno`,
296 :attr:`offset` and :attr:`text` for easier access to the details. :func:`str`
297 of the exception instance returns only the message.
298
299
300.. exception:: SystemError
301
302 Raised when the interpreter finds an internal error, but the situation does not
303 look so serious to cause it to abandon all hope. The associated value is a
304 string indicating what went wrong (in low-level terms).
305
306 You should report this to the author or maintainer of your Python interpreter.
307 Be sure to report the version of the Python interpreter (``sys.version``; it is
308 also printed at the start of an interactive Python session), the exact error
309 message (the exception's associated value) and if possible the source of the
310 program that triggered the error.
311
312
313.. exception:: SystemExit
314
315 This exception is raised by the :func:`sys.exit` function. When it is not
316 handled, the Python interpreter exits; no stack traceback is printed. If the
317 associated value is a plain integer, it specifies the system exit status (passed
318 to C's :cfunc:`exit` function); if it is ``None``, the exit status is zero; if
319 it has another type (such as a string), the object's value is printed and the
320 exit status is one.
321
322 .. % XXX(hylton) xref to module sys?
323
324 Instances have an attribute :attr:`code` which is set to the proposed exit
325 status or error message (defaulting to ``None``). Also, this exception derives
326 directly from :exc:`BaseException` and not :exc:`Exception`, since it is not
327 technically an error.
328
329 A call to :func:`sys.exit` is translated into an exception so that clean-up
330 handlers (:keyword:`finally` clauses of :keyword:`try` statements) can be
331 executed, and so that a debugger can execute a script without running the risk
332 of losing control. The :func:`os._exit` function can be used if it is
333 absolutely positively necessary to exit immediately (for example, in the child
334 process after a call to :func:`fork`).
335
336 The exception inherits from :exc:`BaseException` instead of :exc:`Exception` so
337 that it is not accidentally caught by code that catches :exc:`Exception`. This
338 allows the exception to properly propagate up and cause the interpreter to exit.
339
340 .. versionchanged:: 2.5
341 Changed to inherit from :exc:`BaseException`.
342
343
344.. exception:: TypeError
345
346 Raised when an operation or function is applied to an object of inappropriate
347 type. The associated value is a string giving details about the type mismatch.
348
349
350.. exception:: UnboundLocalError
351
352 Raised when a reference is made to a local variable in a function or method, but
353 no value has been bound to that variable. This is a subclass of
354 :exc:`NameError`.
355
356 .. versionadded:: 2.0
357
358
359.. exception:: UnicodeError
360
361 Raised when a Unicode-related encoding or decoding error occurs. It is a
362 subclass of :exc:`ValueError`.
363
364 .. versionadded:: 2.0
365
366
367.. exception:: UnicodeEncodeError
368
369 Raised when a Unicode-related error occurs during encoding. It is a subclass of
370 :exc:`UnicodeError`.
371
372 .. versionadded:: 2.3
373
374
375.. exception:: UnicodeDecodeError
376
377 Raised when a Unicode-related error occurs during decoding. It is a subclass of
378 :exc:`UnicodeError`.
379
380 .. versionadded:: 2.3
381
382
383.. exception:: UnicodeTranslateError
384
385 Raised when a Unicode-related error occurs during translating. It is a subclass
386 of :exc:`UnicodeError`.
387
388 .. versionadded:: 2.3
389
390
391.. exception:: ValueError
392
393 Raised when a built-in operation or function receives an argument that has the
394 right type but an inappropriate value, and the situation is not described by a
395 more precise exception such as :exc:`IndexError`.
396
397
398.. exception:: WindowsError
399
400 Raised when a Windows-specific error occurs or when the error number does not
401 correspond to an :cdata:`errno` value. The :attr:`winerror` and
402 :attr:`strerror` values are created from the return values of the
403 :cfunc:`GetLastError` and :cfunc:`FormatMessage` functions from the Windows
404 Platform API. The :attr:`errno` value maps the :attr:`winerror` value to
405 corresponding ``errno.h`` values. This is a subclass of :exc:`OSError`.
406
407 .. versionadded:: 2.0
408
409 .. versionchanged:: 2.5
410 Previous versions put the :cfunc:`GetLastError` codes into :attr:`errno`.
411
412
413.. exception:: ZeroDivisionError
414
415 Raised when the second argument of a division or modulo operation is zero. The
416 associated value is a string indicating the type of the operands and the
417 operation.
418
419The following exceptions are used as warning categories; see the :mod:`warnings`
420module for more information.
421
422
423.. exception:: Warning
424
425 Base class for warning categories.
426
427
428.. exception:: UserWarning
429
430 Base class for warnings generated by user code.
431
432
433.. exception:: DeprecationWarning
434
435 Base class for warnings about deprecated features.
436
437
438.. exception:: PendingDeprecationWarning
439
440 Base class for warnings about features which will be deprecated in the future.
441
442
443.. exception:: SyntaxWarning
444
445 Base class for warnings about dubious syntax
446
447
448.. exception:: RuntimeWarning
449
450 Base class for warnings about dubious runtime behavior.
451
452
453.. exception:: FutureWarning
454
455 Base class for warnings about constructs that will change semantically in the
456 future.
457
458
459.. exception:: ImportWarning
460
461 Base class for warnings about probable mistakes in module imports.
462
463 .. versionadded:: 2.5
464
465
466.. exception:: UnicodeWarning
467
468 Base class for warnings related to Unicode.
469
470 .. versionadded:: 2.5
471
472The class hierarchy for built-in exceptions is:
473
474
475.. literalinclude:: ../../Lib/test/exception_hierarchy.txt