blob: 40ccde72d07cc3a1e06cb061d6213cdc4bdfa41f [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
Georg Brandl116aa622007-08-15 14:28:22 +0000405 Instances of this class have attributes :attr:`filename`, :attr:`lineno`,
406 :attr:`offset` and :attr:`text` for easier access to the details. :func:`str`
407 of the exception instance returns only the message.
408
409
Georg Brandl0bdfbfa2010-12-18 17:51:28 +0000410.. exception:: IndentationError
411
412 Base class for syntax errors related to incorrect indentation. This is a
413 subclass of :exc:`SyntaxError`.
414
415
416.. exception:: TabError
417
418 Raised when indentation contains an inconsistent use of tabs and spaces.
419 This is a subclass of :exc:`IndentationError`.
420
421
Georg Brandl116aa622007-08-15 14:28:22 +0000422.. exception:: SystemError
423
424 Raised when the interpreter finds an internal error, but the situation does not
425 look so serious to cause it to abandon all hope. The associated value is a
426 string indicating what went wrong (in low-level terms).
427
428 You should report this to the author or maintainer of your Python interpreter.
429 Be sure to report the version of the Python interpreter (``sys.version``; it is
430 also printed at the start of an interactive Python session), the exact error
431 message (the exception's associated value) and if possible the source of the
432 program that triggered the error.
433
434
435.. exception:: SystemExit
436
Berker Peksag77a6b202015-03-10 14:47:15 +0200437 This exception is raised by the :func:`sys.exit` function. It inherits from
438 :exc:`BaseException` instead of :exc:`Exception` so that it is not accidentally
439 caught by code that catches :exc:`Exception`. This allows the exception to
440 properly propagate up and cause the interpreter to exit. When it is not
441 handled, the Python interpreter exits; no stack traceback is printed. The
442 constructor accepts the same optional argument passed to :func:`sys.exit`.
443 If the value is an integer, it specifies the system exit status (passed to
444 C's :c:func:`exit` function); if it is ``None``, the exit status is zero; if
445 it has another type (such as a string), the object's value is printed and
Georg Brandl95817b32008-05-11 14:30:18 +0000446 the exit status is one.
Georg Brandl116aa622007-08-15 14:28:22 +0000447
Georg Brandl116aa622007-08-15 14:28:22 +0000448 A call to :func:`sys.exit` is translated into an exception so that clean-up
449 handlers (:keyword:`finally` clauses of :keyword:`try` statements) can be
450 executed, and so that a debugger can execute a script without running the risk
451 of losing control. The :func:`os._exit` function can be used if it is
452 absolutely positively necessary to exit immediately (for example, in the child
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300453 process after a call to :func:`os.fork`).
Georg Brandl116aa622007-08-15 14:28:22 +0000454
Berker Peksag77a6b202015-03-10 14:47:15 +0200455 .. attribute:: code
456
457 The exit status or error message that is passed to the constructor.
458 (Defaults to ``None``.)
Georg Brandl116aa622007-08-15 14:28:22 +0000459
Georg Brandl116aa622007-08-15 14:28:22 +0000460
461.. exception:: TypeError
462
463 Raised when an operation or function is applied to an object of inappropriate
464 type. The associated value is a string giving details about the type mismatch.
465
Ethan Furman20bd9f02016-08-05 15:10:16 -0700466 This exception may be raised by user code to indicate that an attempted
467 operation on an object is not supported, and is not meant to be. If an object
468 is meant to support a given operation but has not yet provided an
469 implementation, :exc:`NotImplementedError` is the proper exception to raise.
470
471 Passing arguments of the wrong type (e.g. passing a :class:`list` when an
472 :class:`int` is expected) should result in a :exc:`TypeError`, but passing
473 arguments with the wrong value (e.g. a number outside expected boundaries)
474 should result in a :exc:`ValueError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000475
476.. exception:: UnboundLocalError
477
478 Raised when a reference is made to a local variable in a function or method, but
479 no value has been bound to that variable. This is a subclass of
480 :exc:`NameError`.
481
Georg Brandl116aa622007-08-15 14:28:22 +0000482
483.. exception:: UnicodeError
484
485 Raised when a Unicode-related encoding or decoding error occurs. It is a
486 subclass of :exc:`ValueError`.
487
Benjamin Peterson78f7e3a2012-12-02 11:33:06 -0500488 :exc:`UnicodeError` has attributes that describe the encoding or decoding
489 error. For example, ``err.object[err.start:err.end]`` gives the particular
490 invalid input that the codec failed on.
491
492 .. attribute:: encoding
493
494 The name of the encoding that raised the error.
495
496 .. attribute:: reason
497
498 A string describing the specific codec error.
499
500 .. attribute:: object
501
502 The object the codec was attempting to encode or decode.
503
504 .. attribute:: start
505
506 The first index of invalid data in :attr:`object`.
507
508 .. attribute:: end
509
510 The index after the last invalid data in :attr:`object`.
511
Georg Brandl116aa622007-08-15 14:28:22 +0000512
513.. exception:: UnicodeEncodeError
514
515 Raised when a Unicode-related error occurs during encoding. It is a subclass of
516 :exc:`UnicodeError`.
517
Georg Brandl116aa622007-08-15 14:28:22 +0000518
519.. exception:: UnicodeDecodeError
520
521 Raised when a Unicode-related error occurs during decoding. It is a subclass of
522 :exc:`UnicodeError`.
523
Georg Brandl116aa622007-08-15 14:28:22 +0000524
525.. exception:: UnicodeTranslateError
526
527 Raised when a Unicode-related error occurs during translating. It is a subclass
528 of :exc:`UnicodeError`.
529
Georg Brandl116aa622007-08-15 14:28:22 +0000530
531.. exception:: ValueError
532
Raymond Hettingerfeabae92018-07-17 08:35:26 -0700533 Raised when an operation or function receives an argument that has the
Georg Brandl116aa622007-08-15 14:28:22 +0000534 right type but an inappropriate value, and the situation is not described by a
535 more precise exception such as :exc:`IndexError`.
536
537
Georg Brandl116aa622007-08-15 14:28:22 +0000538.. exception:: ZeroDivisionError
539
540 Raised when the second argument of a division or modulo operation is zero. The
541 associated value is a string indicating the type of the operands and the
542 operation.
543
Georg Brandlfbd1b222009-12-29 21:38:35 +0000544
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200545The following exceptions are kept for compatibility with previous versions;
546starting from Python 3.3, they are aliases of :exc:`OSError`.
547
548.. exception:: EnvironmentError
549
550.. exception:: IOError
551
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200552.. exception:: WindowsError
553
554 Only available on Windows.
555
556
557OS exceptions
558^^^^^^^^^^^^^
559
560The following exceptions are subclasses of :exc:`OSError`, they get raised
561depending on the system error code.
562
563.. exception:: BlockingIOError
564
565 Raised when an operation would block on an object (e.g. socket) set
566 for non-blocking operation.
567 Corresponds to :c:data:`errno` ``EAGAIN``, ``EALREADY``,
568 ``EWOULDBLOCK`` and ``EINPROGRESS``.
569
Antoine Pitrouf55011f2011-10-12 18:57:23 +0200570 In addition to those of :exc:`OSError`, :exc:`BlockingIOError` can have
571 one more attribute:
572
573 .. attribute:: characters_written
574
575 An integer containing the number of characters written to the stream
576 before it blocked. This attribute is available when using the
577 buffered I/O classes from the :mod:`io` module.
578
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200579.. exception:: ChildProcessError
580
581 Raised when an operation on a child process failed.
582 Corresponds to :c:data:`errno` ``ECHILD``.
583
584.. exception:: ConnectionError
585
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300586 A base class for connection-related issues.
587
588 Subclasses are :exc:`BrokenPipeError`, :exc:`ConnectionAbortedError`,
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200589 :exc:`ConnectionRefusedError` and :exc:`ConnectionResetError`.
590
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300591.. exception:: BrokenPipeError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200592
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300593 A subclass of :exc:`ConnectionError`, raised when trying to write on a
594 pipe while the other end has been closed, or trying to write on a socket
595 which has been shutdown for writing.
596 Corresponds to :c:data:`errno` ``EPIPE`` and ``ESHUTDOWN``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200597
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300598.. exception:: ConnectionAbortedError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200599
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300600 A subclass of :exc:`ConnectionError`, raised when a connection attempt
601 is aborted by the peer.
602 Corresponds to :c:data:`errno` ``ECONNABORTED``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200603
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300604.. exception:: ConnectionRefusedError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200605
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300606 A subclass of :exc:`ConnectionError`, raised when a connection attempt
607 is refused by the peer.
608 Corresponds to :c:data:`errno` ``ECONNREFUSED``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200609
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300610.. exception:: ConnectionResetError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200611
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300612 A subclass of :exc:`ConnectionError`, raised when a connection is
613 reset by the peer.
614 Corresponds to :c:data:`errno` ``ECONNRESET``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200615
616.. exception:: FileExistsError
617
618 Raised when trying to create a file or directory which already exists.
619 Corresponds to :c:data:`errno` ``EEXIST``.
620
621.. exception:: FileNotFoundError
622
623 Raised when a file or directory is requested but doesn't exist.
624 Corresponds to :c:data:`errno` ``ENOENT``.
625
626.. exception:: InterruptedError
627
628 Raised when a system call is interrupted by an incoming signal.
Victor Stinnerf70e1ca2015-03-30 21:16:11 +0200629 Corresponds to :c:data:`errno` :py:data:`~errno.EINTR`.
630
631 .. versionchanged:: 3.5
632 Python now retries system calls when a syscall is interrupted by a
633 signal, except if the signal handler raises an exception (see :pep:`475`
634 for the rationale), instead of raising :exc:`InterruptedError`.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200635
636.. exception:: IsADirectoryError
637
638 Raised when a file operation (such as :func:`os.remove`) is requested
639 on a directory.
640 Corresponds to :c:data:`errno` ``EISDIR``.
641
642.. exception:: NotADirectoryError
643
644 Raised when a directory operation (such as :func:`os.listdir`) is requested
645 on something which is not a directory.
646 Corresponds to :c:data:`errno` ``ENOTDIR``.
647
648.. exception:: PermissionError
649
650 Raised when trying to run an operation without the adequate access
651 rights - for example filesystem permissions.
652 Corresponds to :c:data:`errno` ``EACCES`` and ``EPERM``.
653
654.. exception:: ProcessLookupError
655
656 Raised when a given process doesn't exist.
657 Corresponds to :c:data:`errno` ``ESRCH``.
658
659.. exception:: TimeoutError
660
661 Raised when a system function timed out at the system level.
662 Corresponds to :c:data:`errno` ``ETIMEDOUT``.
663
664.. versionadded:: 3.3
665 All the above :exc:`OSError` subclasses were added.
666
667
668.. seealso::
669
670 :pep:`3151` - Reworking the OS and IO exception hierarchy
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200671
672
Nick Coghlan9b997472018-01-08 12:45:02 +1000673.. _warning-categories-as-exceptions:
674
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200675Warnings
676--------
677
Nick Coghlan9b997472018-01-08 12:45:02 +1000678The following exceptions are used as warning categories; see the
679:ref:`warning-categories` documentation for more details.
Georg Brandl116aa622007-08-15 14:28:22 +0000680
Georg Brandl116aa622007-08-15 14:28:22 +0000681.. exception:: Warning
682
683 Base class for warning categories.
684
685
686.. exception:: UserWarning
687
688 Base class for warnings generated by user code.
689
690
691.. exception:: DeprecationWarning
692
Nick Coghlan9b997472018-01-08 12:45:02 +1000693 Base class for warnings about deprecated features when those warnings are
694 intended for other Python developers.
Georg Brandl116aa622007-08-15 14:28:22 +0000695
Victor Stinnerb9783d22020-01-24 10:22:18 +0100696 Ignored by the default warning filters, except in the ``__main__`` module
697 (:pep:`565`). Enabling the :ref:`Python Development Mode <devmode>` shows
698 this warning.
699
Georg Brandl116aa622007-08-15 14:28:22 +0000700
701.. exception:: PendingDeprecationWarning
702
Inada Naokia3283ef2019-04-15 21:40:23 +0900703 Base class for warnings about features which are obsolete and
704 expected to be deprecated in the future, but are not deprecated
705 at the moment.
Georg Brandl116aa622007-08-15 14:28:22 +0000706
Inada Naokia3283ef2019-04-15 21:40:23 +0900707 This class is rarely used as emitting a warning about a possible
708 upcoming deprecation is unusual, and :exc:`DeprecationWarning`
709 is preferred for already active deprecations.
Inada Naoki176d2632019-04-05 17:54:24 +0900710
Victor Stinnerb9783d22020-01-24 10:22:18 +0100711 Ignored by the default warning filters. Enabling the :ref:`Python
712 Development Mode <devmode>` shows this warning.
713
Georg Brandl116aa622007-08-15 14:28:22 +0000714
715.. exception:: SyntaxWarning
716
Martin Panterd21e0b52015-10-10 10:36:22 +0000717 Base class for warnings about dubious syntax.
Georg Brandl116aa622007-08-15 14:28:22 +0000718
719
720.. exception:: RuntimeWarning
721
722 Base class for warnings about dubious runtime behavior.
723
724
725.. exception:: FutureWarning
726
Nick Coghlan9b997472018-01-08 12:45:02 +1000727 Base class for warnings about deprecated features when those warnings are
728 intended for end users of applications that are written in Python.
Georg Brandl116aa622007-08-15 14:28:22 +0000729
730
731.. exception:: ImportWarning
732
733 Base class for warnings about probable mistakes in module imports.
734
Victor Stinnerb9783d22020-01-24 10:22:18 +0100735 Ignored by the default warning filters. Enabling the :ref:`Python
736 Development Mode <devmode>` shows this warning.
737
Georg Brandl116aa622007-08-15 14:28:22 +0000738
739.. exception:: UnicodeWarning
740
741 Base class for warnings related to Unicode.
742
Georg Brandl08be72d2010-10-24 15:11:22 +0000743
Inada Naoki48274832021-03-29 12:28:14 +0900744.. exception:: EncodingWarning
745
746 Base class for warnings related to encodings.
747
748 See :ref:`io-encoding-warning` for details.
749
750 .. versionadded:: 3.10
751
752
Guido van Rossum98297ee2007-11-06 21:34:58 +0000753.. exception:: BytesWarning
Georg Brandl116aa622007-08-15 14:28:22 +0000754
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300755 Base class for warnings related to :class:`bytes` and :class:`bytearray`.
Guido van Rossum98297ee2007-11-06 21:34:58 +0000756
Georg Brandl08be72d2010-10-24 15:11:22 +0000757
758.. exception:: ResourceWarning
759
Victor Stinnerb9783d22020-01-24 10:22:18 +0100760 Base class for warnings related to resource usage.
761
762 Ignored by the default warning filters. Enabling the :ref:`Python
763 Development Mode <devmode>` shows this warning.
Georg Brandl08be72d2010-10-24 15:11:22 +0000764
765 .. versionadded:: 3.2
766
767
768
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +0000769Exception hierarchy
770-------------------
Guido van Rossum98297ee2007-11-06 21:34:58 +0000771
772The class hierarchy for built-in exceptions is:
Georg Brandl116aa622007-08-15 14:28:22 +0000773
774.. literalinclude:: ../../Lib/test/exception_hierarchy.txt