blob: 4dea6701a6bfd08f2d4cb98d732a405ee7284277 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001.. _bltin-exceptions:
2
3Built-in Exceptions
4===================
5
Georg Brandl116aa622007-08-15 14:28:22 +00006.. index::
7 statement: try
8 statement: except
9
Georg Brandlfbd1b222009-12-29 21:38:35 +000010In Python, all exceptions must be instances of a class that derives from
11:class:`BaseException`. In a :keyword:`try` statement with an :keyword:`except`
Georg Brandl116aa622007-08-15 14:28:22 +000012clause that mentions a particular class, that clause also handles any exception
13classes derived from that class (but not exception classes from which *it* is
14derived). Two exception classes that are not related via subclassing are never
15equivalent, even if they have the same name.
16
17.. index:: statement: raise
18
19The built-in exceptions listed below can be generated by the interpreter or
20built-in functions. Except where mentioned, they have an "associated value"
Georg Brandlfb6fd5d2011-01-07 18:28:45 +000021indicating the detailed cause of the error. This may be a string or a tuple of
22several items of information (e.g., an error code and a string explaining the
23code). The associated value is usually passed as arguments to the exception
24class's constructor.
Georg Brandl116aa622007-08-15 14:28:22 +000025
26User code can raise built-in exceptions. This can be used to test an exception
27handler or to report an error condition "just like" the situation in which the
28interpreter raises the same exception; but beware that there is nothing to
29prevent user code from raising an inappropriate error.
30
Mark Dickinsonabf079d2014-04-14 11:20:12 -040031The built-in exception classes can be subclassed to define new exceptions;
32programmers are encouraged to derive new exceptions from the :exc:`Exception`
33class or one of its subclasses, and not from :exc:`BaseException`. More
34information on defining exceptions is available in the Python Tutorial under
Georg Brandl116aa622007-08-15 14:28:22 +000035:ref:`tut-userexceptions`.
36
Georg Brandle4196d32014-10-31 09:41:46 +010037When raising (or re-raising) an exception in an :keyword:`except` or
38:keyword:`finally` clause
Nick Coghlanab7bf212012-02-26 17:49:52 +100039:attr:`__context__` is automatically set to the last exception caught; if the
40new exception is not handled the traceback that is eventually displayed will
41include the originating exception(s) and the final exception.
42
Nick Coghlan0eee97c2012-12-09 16:21:46 +100043When raising a new exception (rather than using a bare ``raise`` to re-raise
44the exception currently being handled), the implicit exception context can be
45supplemented with an explicit cause by using :keyword:`from` with
46:keyword:`raise`::
47
48 raise new_exc from original_exc
49
50The expression following :keyword:`from` must be an exception or ``None``. It
51will be set as :attr:`__cause__` on the raised exception. Setting
52:attr:`__cause__` also implicitly sets the :attr:`__suppress_context__`
53attribute to ``True``, so that using ``raise new_exc from None``
54effectively replaces the old exception with the new one for display
Andre Delfino55f41e42018-12-05 16:45:30 -030055purposes (e.g. converting :exc:`KeyError` to :exc:`AttributeError`), while
Nick Coghlan0eee97c2012-12-09 16:21:46 +100056leaving the old exception available in :attr:`__context__` for introspection
57when debugging.
Nick Coghlanab7bf212012-02-26 17:49:52 +100058
Nick Coghlan8e18fc82012-12-08 21:39:24 +100059The default traceback display code shows these chained exceptions in
60addition to the traceback for the exception itself. An explicitly chained
61exception in :attr:`__cause__` is always shown when present. An implicitly
62chained exception in :attr:`__context__` is shown only if :attr:`__cause__`
Nick Coghlan0eee97c2012-12-09 16:21:46 +100063is :const:`None` and :attr:`__suppress_context__` is false.
Nick Coghlan8e18fc82012-12-08 21:39:24 +100064
65In either case, the exception itself is always shown after any chained
66exceptions so that the final line of the traceback always shows the last
67exception that was raised.
Nick Coghlanab7bf212012-02-26 17:49:52 +100068
Antoine Pitrouf9c77462011-10-12 16:02:00 +020069
70Base classes
71------------
72
Georg Brandlfbd1b222009-12-29 21:38:35 +000073The following exceptions are used mostly as base classes for other exceptions.
Georg Brandl116aa622007-08-15 14:28:22 +000074
Georg Brandl116aa622007-08-15 14:28:22 +000075.. exception:: BaseException
76
77 The base class for all built-in exceptions. It is not meant to be directly
Georg Brandlfb6fd5d2011-01-07 18:28:45 +000078 inherited by user-defined classes (for that, use :exc:`Exception`). If
Amaury Forgeot d'Arc3b1acf12011-11-22 19:34:08 +010079 :func:`str` is called on an instance of this class, the representation of
80 the argument(s) to the instance are returned, or the empty string when
81 there were no arguments.
Georg Brandlfb6fd5d2011-01-07 18:28:45 +000082
83 .. attribute:: args
84
85 The tuple of arguments given to the exception constructor. Some built-in
Andrew Svetlov5898d4f2014-04-01 00:44:13 +030086 exceptions (like :exc:`OSError`) expect a certain number of arguments and
Georg Brandlfb6fd5d2011-01-07 18:28:45 +000087 assign a special meaning to the elements of this tuple, while others are
88 usually called only with a single string giving an error message.
89
90 .. method:: with_traceback(tb)
91
92 This method sets *tb* as the new traceback for the exception and returns
Irit Katrielc590c232020-12-16 16:03:32 +000093 the exception object. It was more commonly used before the exception
94 chaining features of :pep:`3134` became available. The following example
95 shows how we can convert an instance of ``SomeException`` into an
96 instance of ``OtherException`` while preserving the traceback. Once
97 raised, the current frame is pushed onto the traceback of the
98 ``OtherException``, as would have happened to the traceback of the
99 original ``SomeException`` had we allowed it to propagate to the caller.
Georg Brandlfb6fd5d2011-01-07 18:28:45 +0000100
101 try:
102 ...
103 except SomeException:
104 tb = sys.exc_info()[2]
105 raise OtherException(...).with_traceback(tb)
Georg Brandl116aa622007-08-15 14:28:22 +0000106
Georg Brandl116aa622007-08-15 14:28:22 +0000107
108.. exception:: Exception
109
110 All built-in, non-system-exiting exceptions are derived from this class. All
111 user-defined exceptions should also be derived from this class.
112
Georg Brandl116aa622007-08-15 14:28:22 +0000113
114.. exception:: ArithmeticError
115
116 The base class for those built-in exceptions that are raised for various
117 arithmetic errors: :exc:`OverflowError`, :exc:`ZeroDivisionError`,
118 :exc:`FloatingPointError`.
119
120
Georg Brandl0bdfbfa2010-12-18 17:51:28 +0000121.. exception:: BufferError
122
123 Raised when a :ref:`buffer <bufferobjects>` related operation cannot be
124 performed.
125
126
Georg Brandl116aa622007-08-15 14:28:22 +0000127.. exception:: LookupError
128
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000129 The base class for the exceptions that are raised when a key or index used on
130 a mapping or sequence is invalid: :exc:`IndexError`, :exc:`KeyError`. This
131 can be raised directly by :func:`codecs.lookup`.
Georg Brandl116aa622007-08-15 14:28:22 +0000132
133
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200134Concrete exceptions
135-------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000136
Georg Brandlfbd1b222009-12-29 21:38:35 +0000137The following exceptions are the exceptions that are usually raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000138
139.. exception:: AssertionError
140
141 .. index:: statement: assert
142
143 Raised when an :keyword:`assert` statement fails.
144
145
146.. exception:: AttributeError
147
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000148 Raised when an attribute reference (see :ref:`attribute-references`) or
149 assignment fails. (When an object does not support attribute references or
150 attribute assignments at all, :exc:`TypeError` is raised.)
Georg Brandl116aa622007-08-15 14:28:22 +0000151
152
153.. exception:: EOFError
154
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300155 Raised when the :func:`input` function hits an end-of-file condition (EOF)
156 without reading any data. (N.B.: the :meth:`io.IOBase.read` and
157 :meth:`io.IOBase.readline` methods return an empty string when they hit EOF.)
Georg Brandl116aa622007-08-15 14:28:22 +0000158
159
160.. exception:: FloatingPointError
161
Nathaniel J. Smith735ae8d2018-01-05 23:15:34 -0800162 Not currently used.
Georg Brandl116aa622007-08-15 14:28:22 +0000163
164
165.. exception:: GeneratorExit
166
Yury Selivanov66f88282015-06-24 11:04:15 -0400167 Raised when a :term:`generator` or :term:`coroutine` is closed;
168 see :meth:`generator.close` and :meth:`coroutine.close`. It
Christian Heimescbf3b5c2007-12-03 21:02:03 +0000169 directly inherits from :exc:`BaseException` instead of :exc:`Exception` since
170 it is technically not an error.
Georg Brandl116aa622007-08-15 14:28:22 +0000171
Georg Brandl116aa622007-08-15 14:28:22 +0000172
Georg Brandl116aa622007-08-15 14:28:22 +0000173.. exception:: ImportError
174
Eric Snowc9432652016-09-07 15:42:32 -0700175 Raised when the :keyword:`import` statement has troubles trying to
176 load a module. Also raised when the "from list" in ``from ... import``
177 has a name that cannot be found.
Georg Brandl116aa622007-08-15 14:28:22 +0000178
Brett Cannon79ec55e2012-04-12 20:24:54 -0400179 The :attr:`name` and :attr:`path` attributes can be set using keyword-only
180 arguments to the constructor. When set they represent the name of the module
181 that was attempted to be imported and the path to any file which triggered
182 the exception, respectively.
183
184 .. versionchanged:: 3.3
185 Added the :attr:`name` and :attr:`path` attributes.
186
Eric Snowc9432652016-09-07 15:42:32 -0700187.. exception:: ModuleNotFoundError
188
189 A subclass of :exc:`ImportError` which is raised by :keyword:`import`
190 when a module could not be located. It is also raised when ``None``
191 is found in :data:`sys.modules`.
192
193 .. versionadded:: 3.6
194
Georg Brandl116aa622007-08-15 14:28:22 +0000195
196.. exception:: IndexError
197
Georg Brandl95817b32008-05-11 14:30:18 +0000198 Raised when a sequence subscript is out of range. (Slice indices are
199 silently truncated to fall in the allowed range; if an index is not an
200 integer, :exc:`TypeError` is raised.)
Georg Brandl116aa622007-08-15 14:28:22 +0000201
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000202 .. XXX xref to sequences
Georg Brandl116aa622007-08-15 14:28:22 +0000203
204
205.. exception:: KeyError
206
207 Raised when a mapping (dictionary) key is not found in the set of existing keys.
208
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000209 .. XXX xref to mapping objects?
Georg Brandl116aa622007-08-15 14:28:22 +0000210
211
212.. exception:: KeyboardInterrupt
213
214 Raised when the user hits the interrupt key (normally :kbd:`Control-C` or
Georg Brandl81ac1ce2007-08-31 17:17:17 +0000215 :kbd:`Delete`). During execution, a check for interrupts is made
216 regularly. The exception inherits from :exc:`BaseException` so as to not be
217 accidentally caught by code that catches :exc:`Exception` and thus prevent
218 the interpreter from exiting.
Georg Brandl116aa622007-08-15 14:28:22 +0000219
Georg Brandl116aa622007-08-15 14:28:22 +0000220
221.. exception:: MemoryError
222
223 Raised when an operation runs out of memory but the situation may still be
224 rescued (by deleting some objects). The associated value is a string indicating
225 what kind of (internal) operation ran out of memory. Note that because of the
Georg Brandl60203b42010-10-06 10:11:56 +0000226 underlying memory management architecture (C's :c:func:`malloc` function), the
Georg Brandl116aa622007-08-15 14:28:22 +0000227 interpreter may not always be able to completely recover from this situation; it
228 nevertheless raises an exception so that a stack traceback can be printed, in
229 case a run-away program was the cause.
230
231
232.. exception:: NameError
233
234 Raised when a local or global name is not found. This applies only to
235 unqualified names. The associated value is an error message that includes the
236 name that could not be found.
237
238
239.. exception:: NotImplementedError
240
241 This exception is derived from :exc:`RuntimeError`. In user defined base
Ethan Furman20bd9f02016-08-05 15:10:16 -0700242 classes, abstract methods should raise this exception when they require
243 derived classes to override the method, or while the class is being
244 developed to indicate that the real implementation still needs to be added.
Georg Brandl116aa622007-08-15 14:28:22 +0000245
Ethan Furman20bd9f02016-08-05 15:10:16 -0700246 .. note::
247
delirious-lettuce3378b202017-05-19 14:37:57 -0600248 It should not be used to indicate that an operator or method is not
Ethan Furman20bd9f02016-08-05 15:10:16 -0700249 meant to be supported at all -- in that case either leave the operator /
250 method undefined or, if a subclass, set it to :data:`None`.
251
252 .. note::
253
254 ``NotImplementedError`` and ``NotImplemented`` are not interchangeable,
255 even though they have similar names and purposes. See
256 :data:`NotImplemented` for details on when to use it.
Georg Brandl116aa622007-08-15 14:28:22 +0000257
Martin Panter5487c132015-10-26 11:05:42 +0000258.. exception:: OSError([arg])
259 OSError(errno, strerror[, filename[, winerror[, filename2]]])
Georg Brandl116aa622007-08-15 14:28:22 +0000260
Christian Heimesa62da1d2008-01-12 19:39:10 +0000261 .. index:: module: errno
262
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200263 This exception is raised when a system function returns a system-related
264 error, including I/O failures such as "file not found" or "disk full"
Martin Panter5487c132015-10-26 11:05:42 +0000265 (not for illegal argument types or other incidental errors).
Christian Heimesa62da1d2008-01-12 19:39:10 +0000266
Martin Panter5487c132015-10-26 11:05:42 +0000267 The second form of the constructor sets the corresponding attributes,
268 described below. The attributes default to :const:`None` if not
269 specified. For backwards compatibility, if three arguments are passed,
270 the :attr:`~BaseException.args` attribute contains only a 2-tuple
271 of the first two constructor arguments.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200272
Martin Panter5487c132015-10-26 11:05:42 +0000273 The constructor often actually returns a subclass of :exc:`OSError`, as
274 described in `OS exceptions`_ below. The particular subclass depends on
275 the final :attr:`.errno` value. This behaviour only occurs when
276 constructing :exc:`OSError` directly or via an alias, and is not
277 inherited when subclassing.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200278
Martin Panter5487c132015-10-26 11:05:42 +0000279 .. attribute:: errno
280
281 A numeric error code from the C variable :c:data:`errno`.
282
283 .. attribute:: winerror
284
285 Under Windows, this gives you the native
286 Windows error code. The :attr:`.errno` attribute is then an approximate
287 translation, in POSIX terms, of that native error code.
288
289 Under Windows, if the *winerror* constructor argument is an integer,
290 the :attr:`.errno` attribute is determined from the Windows error code,
291 and the *errno* argument is ignored. On other platforms, the
292 *winerror* argument is ignored, and the :attr:`winerror` attribute
293 does not exist.
294
295 .. attribute:: strerror
296
297 The corresponding error message, as provided by
298 the operating system. It is formatted by the C
299 functions :c:func:`perror` under POSIX, and :c:func:`FormatMessage`
300 under Windows.
301
302 .. attribute:: filename
303 filename2
304
305 For exceptions that involve a file system path (such as :func:`open` or
306 :func:`os.unlink`), :attr:`filename` is the file name passed to the function.
307 For functions that involve two file system paths (such as
308 :func:`os.rename`), :attr:`filename2` corresponds to the second
309 file name passed to the function.
Larry Hastingsb0827312014-02-09 22:05:19 -0800310
Georg Brandl116aa622007-08-15 14:28:22 +0000311
Antoine Pitrou195e7022011-10-12 16:46:46 +0200312 .. versionchanged:: 3.3
313 :exc:`EnvironmentError`, :exc:`IOError`, :exc:`WindowsError`,
Berker Peksag8fafc742016-04-11 12:23:04 +0300314 :exc:`socket.error`, :exc:`select.error` and
Martin Panter5487c132015-10-26 11:05:42 +0000315 :exc:`mmap.error` have been merged into :exc:`OSError`, and the
316 constructor may return a subclass.
Antoine Pitrou195e7022011-10-12 16:46:46 +0200317
Victor Stinner292c8352012-10-30 02:17:38 +0100318 .. versionchanged:: 3.4
Victor Stinner292c8352012-10-30 02:17:38 +0100319 The :attr:`filename` attribute is now the original file name passed to
320 the function, instead of the name encoded to or decoded from the
Victor Stinner4b9aad42020-11-02 16:49:54 +0100321 :term:`filesystem encoding and error handler`. Also, the *filename2*
322 constructor argument and attribute was added.
Victor Stinner292c8352012-10-30 02:17:38 +0100323
Georg Brandl116aa622007-08-15 14:28:22 +0000324
325.. exception:: OverflowError
326
327 Raised when the result of an arithmetic operation is too large to be
Georg Brandlba956ae2007-11-29 17:24:34 +0000328 represented. This cannot occur for integers (which would rather raise
Terry Jan Reedyb6d1f482014-06-16 03:31:00 -0400329 :exc:`MemoryError` than give up). However, for historical reasons,
330 OverflowError is sometimes raised for integers that are outside a required
331 range. Because of the lack of standardization of floating point exception
332 handling in C, most floating point operations are not checked.
Georg Brandl116aa622007-08-15 14:28:22 +0000333
334
Yury Selivanovf488fb42015-07-03 01:04:23 -0400335.. exception:: RecursionError
336
337 This exception is derived from :exc:`RuntimeError`. It is raised when the
338 interpreter detects that the maximum recursion depth (see
339 :func:`sys.getrecursionlimit`) is exceeded.
340
341 .. versionadded:: 3.5
342 Previously, a plain :exc:`RuntimeError` was raised.
343
344
Georg Brandl116aa622007-08-15 14:28:22 +0000345.. exception:: ReferenceError
346
347 This exception is raised when a weak reference proxy, created by the
348 :func:`weakref.proxy` function, is used to access an attribute of the referent
349 after it has been garbage collected. For more information on weak references,
350 see the :mod:`weakref` module.
351
Georg Brandl116aa622007-08-15 14:28:22 +0000352
353.. exception:: RuntimeError
354
355 Raised when an error is detected that doesn't fall in any of the other
356 categories. The associated value is a string indicating what precisely went
Antoine Pitrou9527f162013-11-25 19:08:32 +0100357 wrong.
Georg Brandl116aa622007-08-15 14:28:22 +0000358
359
360.. exception:: StopIteration
361
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000362 Raised by built-in function :func:`next` and an :term:`iterator`\'s
Ezio Melotti1dd7c302012-10-12 13:45:38 +0300363 :meth:`~iterator.__next__` method to signal that there are no further
364 items produced by the iterator.
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000365
366 The exception object has a single attribute :attr:`value`, which is
367 given as an argument when constructing the exception, and defaults
368 to :const:`None`.
369
Yury Selivanov66f88282015-06-24 11:04:15 -0400370 When a :term:`generator` or :term:`coroutine` function
371 returns, a new :exc:`StopIteration` instance is
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000372 raised, and the value returned by the function is used as the
373 :attr:`value` parameter to the constructor of the exception.
Georg Brandl116aa622007-08-15 14:28:22 +0000374
Yury Selivanov43c47fe2018-01-26 15:24:24 -0500375 If a generator code directly or indirectly raises :exc:`StopIteration`,
376 it is converted into a :exc:`RuntimeError` (retaining the
377 :exc:`StopIteration` as the new exception's cause).
Yury Selivanov8170e8c2015-05-09 11:44:30 -0400378
Nick Coghlan0ed80192012-01-14 14:43:24 +1000379 .. versionchanged:: 3.3
380 Added ``value`` attribute and the ability for generator functions to
381 use it to return a value.
Georg Brandl116aa622007-08-15 14:28:22 +0000382
Yury Selivanov8170e8c2015-05-09 11:44:30 -0400383 .. versionchanged:: 3.5
Yury Selivanov43c47fe2018-01-26 15:24:24 -0500384 Introduced the RuntimeError transformation via
385 ``from __future__ import generator_stop``, see :pep:`479`.
386
387 .. versionchanged:: 3.7
388 Enable :pep:`479` for all code by default: a :exc:`StopIteration`
389 error raised in a generator is transformed into a :exc:`RuntimeError`.
Yury Selivanov8170e8c2015-05-09 11:44:30 -0400390
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400391.. exception:: StopAsyncIteration
392
393 Must be raised by :meth:`__anext__` method of an
394 :term:`asynchronous iterator` object to stop the iteration.
395
396 .. versionadded:: 3.5
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400397
Georg Brandl116aa622007-08-15 14:28:22 +0000398.. exception:: SyntaxError
399
400 Raised when the parser encounters a syntax error. This may occur in an
401 :keyword:`import` statement, in a call to the built-in functions :func:`exec`
402 or :func:`eval`, or when reading the initial script or standard input
403 (also interactively).
404
Ammar Askarb2a91e02021-04-02 17:25:31 -0400405 The :func:`str` of the exception instance returns only the error message.
406
407 .. attribute:: filename
408
409 The name of the file the syntax error occurred in.
410
411 .. attribute:: lineno
412
413 Which line number in the file the error occurred in. This is
414 1-indexed: the first line in the file has a ``lineno`` of 1.
415
416 .. attribute:: offset
417
418 The column in the line where the error occurred. This is
419 1-indexed: the first character in the line has an ``offset`` of 1.
420
421 .. attribute:: text
422
423 The source code text involved in the error.
Georg Brandl116aa622007-08-15 14:28:22 +0000424
425
Georg Brandl0bdfbfa2010-12-18 17:51:28 +0000426.. exception:: IndentationError
427
428 Base class for syntax errors related to incorrect indentation. This is a
429 subclass of :exc:`SyntaxError`.
430
431
432.. exception:: TabError
433
434 Raised when indentation contains an inconsistent use of tabs and spaces.
435 This is a subclass of :exc:`IndentationError`.
436
437
Georg Brandl116aa622007-08-15 14:28:22 +0000438.. exception:: SystemError
439
440 Raised when the interpreter finds an internal error, but the situation does not
441 look so serious to cause it to abandon all hope. The associated value is a
442 string indicating what went wrong (in low-level terms).
443
444 You should report this to the author or maintainer of your Python interpreter.
445 Be sure to report the version of the Python interpreter (``sys.version``; it is
446 also printed at the start of an interactive Python session), the exact error
447 message (the exception's associated value) and if possible the source of the
448 program that triggered the error.
449
450
451.. exception:: SystemExit
452
Berker Peksag77a6b202015-03-10 14:47:15 +0200453 This exception is raised by the :func:`sys.exit` function. It inherits from
454 :exc:`BaseException` instead of :exc:`Exception` so that it is not accidentally
455 caught by code that catches :exc:`Exception`. This allows the exception to
456 properly propagate up and cause the interpreter to exit. When it is not
457 handled, the Python interpreter exits; no stack traceback is printed. The
458 constructor accepts the same optional argument passed to :func:`sys.exit`.
459 If the value is an integer, it specifies the system exit status (passed to
460 C's :c:func:`exit` function); if it is ``None``, the exit status is zero; if
461 it has another type (such as a string), the object's value is printed and
Georg Brandl95817b32008-05-11 14:30:18 +0000462 the exit status is one.
Georg Brandl116aa622007-08-15 14:28:22 +0000463
Georg Brandl116aa622007-08-15 14:28:22 +0000464 A call to :func:`sys.exit` is translated into an exception so that clean-up
465 handlers (:keyword:`finally` clauses of :keyword:`try` statements) can be
466 executed, and so that a debugger can execute a script without running the risk
467 of losing control. The :func:`os._exit` function can be used if it is
468 absolutely positively necessary to exit immediately (for example, in the child
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300469 process after a call to :func:`os.fork`).
Georg Brandl116aa622007-08-15 14:28:22 +0000470
Berker Peksag77a6b202015-03-10 14:47:15 +0200471 .. attribute:: code
472
473 The exit status or error message that is passed to the constructor.
474 (Defaults to ``None``.)
Georg Brandl116aa622007-08-15 14:28:22 +0000475
Georg Brandl116aa622007-08-15 14:28:22 +0000476
477.. exception:: TypeError
478
479 Raised when an operation or function is applied to an object of inappropriate
480 type. The associated value is a string giving details about the type mismatch.
481
Ethan Furman20bd9f02016-08-05 15:10:16 -0700482 This exception may be raised by user code to indicate that an attempted
483 operation on an object is not supported, and is not meant to be. If an object
484 is meant to support a given operation but has not yet provided an
485 implementation, :exc:`NotImplementedError` is the proper exception to raise.
486
487 Passing arguments of the wrong type (e.g. passing a :class:`list` when an
488 :class:`int` is expected) should result in a :exc:`TypeError`, but passing
489 arguments with the wrong value (e.g. a number outside expected boundaries)
490 should result in a :exc:`ValueError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000491
492.. exception:: UnboundLocalError
493
494 Raised when a reference is made to a local variable in a function or method, but
495 no value has been bound to that variable. This is a subclass of
496 :exc:`NameError`.
497
Georg Brandl116aa622007-08-15 14:28:22 +0000498
499.. exception:: UnicodeError
500
501 Raised when a Unicode-related encoding or decoding error occurs. It is a
502 subclass of :exc:`ValueError`.
503
Benjamin Peterson78f7e3a2012-12-02 11:33:06 -0500504 :exc:`UnicodeError` has attributes that describe the encoding or decoding
505 error. For example, ``err.object[err.start:err.end]`` gives the particular
506 invalid input that the codec failed on.
507
508 .. attribute:: encoding
509
510 The name of the encoding that raised the error.
511
512 .. attribute:: reason
513
514 A string describing the specific codec error.
515
516 .. attribute:: object
517
518 The object the codec was attempting to encode or decode.
519
520 .. attribute:: start
521
522 The first index of invalid data in :attr:`object`.
523
524 .. attribute:: end
525
526 The index after the last invalid data in :attr:`object`.
527
Georg Brandl116aa622007-08-15 14:28:22 +0000528
529.. exception:: UnicodeEncodeError
530
531 Raised when a Unicode-related error occurs during encoding. It is a subclass of
532 :exc:`UnicodeError`.
533
Georg Brandl116aa622007-08-15 14:28:22 +0000534
535.. exception:: UnicodeDecodeError
536
537 Raised when a Unicode-related error occurs during decoding. It is a subclass of
538 :exc:`UnicodeError`.
539
Georg Brandl116aa622007-08-15 14:28:22 +0000540
541.. exception:: UnicodeTranslateError
542
543 Raised when a Unicode-related error occurs during translating. It is a subclass
544 of :exc:`UnicodeError`.
545
Georg Brandl116aa622007-08-15 14:28:22 +0000546
547.. exception:: ValueError
548
Raymond Hettingerfeabae92018-07-17 08:35:26 -0700549 Raised when an operation or function receives an argument that has the
Georg Brandl116aa622007-08-15 14:28:22 +0000550 right type but an inappropriate value, and the situation is not described by a
551 more precise exception such as :exc:`IndexError`.
552
553
Georg Brandl116aa622007-08-15 14:28:22 +0000554.. exception:: ZeroDivisionError
555
556 Raised when the second argument of a division or modulo operation is zero. The
557 associated value is a string indicating the type of the operands and the
558 operation.
559
Georg Brandlfbd1b222009-12-29 21:38:35 +0000560
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200561The following exceptions are kept for compatibility with previous versions;
562starting from Python 3.3, they are aliases of :exc:`OSError`.
563
564.. exception:: EnvironmentError
565
566.. exception:: IOError
567
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200568.. exception:: WindowsError
569
570 Only available on Windows.
571
572
573OS exceptions
574^^^^^^^^^^^^^
575
576The following exceptions are subclasses of :exc:`OSError`, they get raised
577depending on the system error code.
578
579.. exception:: BlockingIOError
580
581 Raised when an operation would block on an object (e.g. socket) set
582 for non-blocking operation.
583 Corresponds to :c:data:`errno` ``EAGAIN``, ``EALREADY``,
584 ``EWOULDBLOCK`` and ``EINPROGRESS``.
585
Antoine Pitrouf55011f2011-10-12 18:57:23 +0200586 In addition to those of :exc:`OSError`, :exc:`BlockingIOError` can have
587 one more attribute:
588
589 .. attribute:: characters_written
590
591 An integer containing the number of characters written to the stream
592 before it blocked. This attribute is available when using the
593 buffered I/O classes from the :mod:`io` module.
594
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200595.. exception:: ChildProcessError
596
597 Raised when an operation on a child process failed.
598 Corresponds to :c:data:`errno` ``ECHILD``.
599
600.. exception:: ConnectionError
601
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300602 A base class for connection-related issues.
603
604 Subclasses are :exc:`BrokenPipeError`, :exc:`ConnectionAbortedError`,
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200605 :exc:`ConnectionRefusedError` and :exc:`ConnectionResetError`.
606
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300607.. exception:: BrokenPipeError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200608
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300609 A subclass of :exc:`ConnectionError`, raised when trying to write on a
610 pipe while the other end has been closed, or trying to write on a socket
611 which has been shutdown for writing.
612 Corresponds to :c:data:`errno` ``EPIPE`` and ``ESHUTDOWN``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200613
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300614.. exception:: ConnectionAbortedError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200615
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300616 A subclass of :exc:`ConnectionError`, raised when a connection attempt
617 is aborted by the peer.
618 Corresponds to :c:data:`errno` ``ECONNABORTED``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200619
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300620.. exception:: ConnectionRefusedError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200621
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300622 A subclass of :exc:`ConnectionError`, raised when a connection attempt
623 is refused by the peer.
624 Corresponds to :c:data:`errno` ``ECONNREFUSED``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200625
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300626.. exception:: ConnectionResetError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200627
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300628 A subclass of :exc:`ConnectionError`, raised when a connection is
629 reset by the peer.
630 Corresponds to :c:data:`errno` ``ECONNRESET``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200631
632.. exception:: FileExistsError
633
634 Raised when trying to create a file or directory which already exists.
635 Corresponds to :c:data:`errno` ``EEXIST``.
636
637.. exception:: FileNotFoundError
638
639 Raised when a file or directory is requested but doesn't exist.
640 Corresponds to :c:data:`errno` ``ENOENT``.
641
642.. exception:: InterruptedError
643
644 Raised when a system call is interrupted by an incoming signal.
Victor Stinnerf70e1ca2015-03-30 21:16:11 +0200645 Corresponds to :c:data:`errno` :py:data:`~errno.EINTR`.
646
647 .. versionchanged:: 3.5
648 Python now retries system calls when a syscall is interrupted by a
649 signal, except if the signal handler raises an exception (see :pep:`475`
650 for the rationale), instead of raising :exc:`InterruptedError`.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200651
652.. exception:: IsADirectoryError
653
654 Raised when a file operation (such as :func:`os.remove`) is requested
655 on a directory.
656 Corresponds to :c:data:`errno` ``EISDIR``.
657
658.. exception:: NotADirectoryError
659
660 Raised when a directory operation (such as :func:`os.listdir`) is requested
661 on something which is not a directory.
662 Corresponds to :c:data:`errno` ``ENOTDIR``.
663
664.. exception:: PermissionError
665
666 Raised when trying to run an operation without the adequate access
667 rights - for example filesystem permissions.
668 Corresponds to :c:data:`errno` ``EACCES`` and ``EPERM``.
669
670.. exception:: ProcessLookupError
671
672 Raised when a given process doesn't exist.
673 Corresponds to :c:data:`errno` ``ESRCH``.
674
675.. exception:: TimeoutError
676
677 Raised when a system function timed out at the system level.
678 Corresponds to :c:data:`errno` ``ETIMEDOUT``.
679
680.. versionadded:: 3.3
681 All the above :exc:`OSError` subclasses were added.
682
683
684.. seealso::
685
686 :pep:`3151` - Reworking the OS and IO exception hierarchy
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200687
688
Nick Coghlan9b997472018-01-08 12:45:02 +1000689.. _warning-categories-as-exceptions:
690
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200691Warnings
692--------
693
Nick Coghlan9b997472018-01-08 12:45:02 +1000694The following exceptions are used as warning categories; see the
695:ref:`warning-categories` documentation for more details.
Georg Brandl116aa622007-08-15 14:28:22 +0000696
Georg Brandl116aa622007-08-15 14:28:22 +0000697.. exception:: Warning
698
699 Base class for warning categories.
700
701
702.. exception:: UserWarning
703
704 Base class for warnings generated by user code.
705
706
707.. exception:: DeprecationWarning
708
Nick Coghlan9b997472018-01-08 12:45:02 +1000709 Base class for warnings about deprecated features when those warnings are
710 intended for other Python developers.
Georg Brandl116aa622007-08-15 14:28:22 +0000711
Victor Stinnerb9783d22020-01-24 10:22:18 +0100712 Ignored by the default warning filters, except in the ``__main__`` module
713 (:pep:`565`). Enabling the :ref:`Python Development Mode <devmode>` shows
714 this warning.
715
Georg Brandl116aa622007-08-15 14:28:22 +0000716
717.. exception:: PendingDeprecationWarning
718
Inada Naokia3283ef2019-04-15 21:40:23 +0900719 Base class for warnings about features which are obsolete and
720 expected to be deprecated in the future, but are not deprecated
721 at the moment.
Georg Brandl116aa622007-08-15 14:28:22 +0000722
Inada Naokia3283ef2019-04-15 21:40:23 +0900723 This class is rarely used as emitting a warning about a possible
724 upcoming deprecation is unusual, and :exc:`DeprecationWarning`
725 is preferred for already active deprecations.
Inada Naoki176d2632019-04-05 17:54:24 +0900726
Victor Stinnerb9783d22020-01-24 10:22:18 +0100727 Ignored by the default warning filters. Enabling the :ref:`Python
728 Development Mode <devmode>` shows this warning.
729
Georg Brandl116aa622007-08-15 14:28:22 +0000730
731.. exception:: SyntaxWarning
732
Martin Panterd21e0b52015-10-10 10:36:22 +0000733 Base class for warnings about dubious syntax.
Georg Brandl116aa622007-08-15 14:28:22 +0000734
735
736.. exception:: RuntimeWarning
737
738 Base class for warnings about dubious runtime behavior.
739
740
741.. exception:: FutureWarning
742
Nick Coghlan9b997472018-01-08 12:45:02 +1000743 Base class for warnings about deprecated features when those warnings are
744 intended for end users of applications that are written in Python.
Georg Brandl116aa622007-08-15 14:28:22 +0000745
746
747.. exception:: ImportWarning
748
749 Base class for warnings about probable mistakes in module imports.
750
Victor Stinnerb9783d22020-01-24 10:22:18 +0100751 Ignored by the default warning filters. Enabling the :ref:`Python
752 Development Mode <devmode>` shows this warning.
753
Georg Brandl116aa622007-08-15 14:28:22 +0000754
755.. exception:: UnicodeWarning
756
757 Base class for warnings related to Unicode.
758
Georg Brandl08be72d2010-10-24 15:11:22 +0000759
Inada Naoki48274832021-03-29 12:28:14 +0900760.. exception:: EncodingWarning
761
762 Base class for warnings related to encodings.
763
764 See :ref:`io-encoding-warning` for details.
765
766 .. versionadded:: 3.10
767
768
Guido van Rossum98297ee2007-11-06 21:34:58 +0000769.. exception:: BytesWarning
Georg Brandl116aa622007-08-15 14:28:22 +0000770
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300771 Base class for warnings related to :class:`bytes` and :class:`bytearray`.
Guido van Rossum98297ee2007-11-06 21:34:58 +0000772
Georg Brandl08be72d2010-10-24 15:11:22 +0000773
774.. exception:: ResourceWarning
775
Victor Stinnerb9783d22020-01-24 10:22:18 +0100776 Base class for warnings related to resource usage.
777
778 Ignored by the default warning filters. Enabling the :ref:`Python
779 Development Mode <devmode>` shows this warning.
Georg Brandl08be72d2010-10-24 15:11:22 +0000780
781 .. versionadded:: 3.2
782
783
784
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +0000785Exception hierarchy
786-------------------
Guido van Rossum98297ee2007-11-06 21:34:58 +0000787
788The class hierarchy for built-in exceptions is:
Georg Brandl116aa622007-08-15 14:28:22 +0000789
790.. literalinclude:: ../../Lib/test/exception_hierarchy.txt