blob: 0e606360efae171b5cdf58ffd997eb8052c15b56 [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
sblondon2fd928c2021-04-29 20:02:40 +020045supplemented with an explicit cause by using :keyword:`from<raise>` with
Nick Coghlan0eee97c2012-12-09 16:21:46 +100046:keyword:`raise`::
47
48 raise new_exc from original_exc
49
sblondon2fd928c2021-04-29 20:02:40 +020050The expression following :keyword:`from<raise>` must be an exception or ``None``. It
Nick Coghlan0eee97c2012-12-09 16:21:46 +100051will 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
Miss Islington (bot)6275ea02021-05-12 17:27:08 -070099 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
Pablo Galindo37494b42021-04-14 02:36:07 +0100152 The :attr:`name` and :attr:`obj` attributes can be set using keyword-only
153 arguments to the constructor. When set they represent the name of the attribute
154 that was attempted to be accessed and the object that was accessed for said
155 attribute, respectively.
156
157 .. versionchanged:: 3.10
158 Added the :attr:`name` and :attr:`obj` attributes.
Georg Brandl116aa622007-08-15 14:28:22 +0000159
160.. exception:: EOFError
161
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300162 Raised when the :func:`input` function hits an end-of-file condition (EOF)
163 without reading any data. (N.B.: the :meth:`io.IOBase.read` and
164 :meth:`io.IOBase.readline` methods return an empty string when they hit EOF.)
Georg Brandl116aa622007-08-15 14:28:22 +0000165
166
167.. exception:: FloatingPointError
168
Nathaniel J. Smith735ae8d2018-01-05 23:15:34 -0800169 Not currently used.
Georg Brandl116aa622007-08-15 14:28:22 +0000170
171
172.. exception:: GeneratorExit
173
Yury Selivanov66f88282015-06-24 11:04:15 -0400174 Raised when a :term:`generator` or :term:`coroutine` is closed;
175 see :meth:`generator.close` and :meth:`coroutine.close`. It
Christian Heimescbf3b5c2007-12-03 21:02:03 +0000176 directly inherits from :exc:`BaseException` instead of :exc:`Exception` since
177 it is technically not an error.
Georg Brandl116aa622007-08-15 14:28:22 +0000178
Georg Brandl116aa622007-08-15 14:28:22 +0000179
Georg Brandl116aa622007-08-15 14:28:22 +0000180.. exception:: ImportError
181
Eric Snowc9432652016-09-07 15:42:32 -0700182 Raised when the :keyword:`import` statement has troubles trying to
183 load a module. Also raised when the "from list" in ``from ... import``
184 has a name that cannot be found.
Georg Brandl116aa622007-08-15 14:28:22 +0000185
Brett Cannon79ec55e2012-04-12 20:24:54 -0400186 The :attr:`name` and :attr:`path` attributes can be set using keyword-only
187 arguments to the constructor. When set they represent the name of the module
188 that was attempted to be imported and the path to any file which triggered
189 the exception, respectively.
190
191 .. versionchanged:: 3.3
192 Added the :attr:`name` and :attr:`path` attributes.
193
Eric Snowc9432652016-09-07 15:42:32 -0700194.. exception:: ModuleNotFoundError
195
196 A subclass of :exc:`ImportError` which is raised by :keyword:`import`
197 when a module could not be located. It is also raised when ``None``
198 is found in :data:`sys.modules`.
199
200 .. versionadded:: 3.6
201
Georg Brandl116aa622007-08-15 14:28:22 +0000202
203.. exception:: IndexError
204
Georg Brandl95817b32008-05-11 14:30:18 +0000205 Raised when a sequence subscript is out of range. (Slice indices are
206 silently truncated to fall in the allowed range; if an index is not an
207 integer, :exc:`TypeError` is raised.)
Georg Brandl116aa622007-08-15 14:28:22 +0000208
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000209 .. XXX xref to sequences
Georg Brandl116aa622007-08-15 14:28:22 +0000210
211
212.. exception:: KeyError
213
214 Raised when a mapping (dictionary) key is not found in the set of existing keys.
215
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000216 .. XXX xref to mapping objects?
Georg Brandl116aa622007-08-15 14:28:22 +0000217
218
219.. exception:: KeyboardInterrupt
220
221 Raised when the user hits the interrupt key (normally :kbd:`Control-C` or
Georg Brandl81ac1ce2007-08-31 17:17:17 +0000222 :kbd:`Delete`). During execution, a check for interrupts is made
223 regularly. The exception inherits from :exc:`BaseException` so as to not be
224 accidentally caught by code that catches :exc:`Exception` and thus prevent
225 the interpreter from exiting.
Georg Brandl116aa622007-08-15 14:28:22 +0000226
Georg Brandl116aa622007-08-15 14:28:22 +0000227
228.. exception:: MemoryError
229
230 Raised when an operation runs out of memory but the situation may still be
231 rescued (by deleting some objects). The associated value is a string indicating
232 what kind of (internal) operation ran out of memory. Note that because of the
Georg Brandl60203b42010-10-06 10:11:56 +0000233 underlying memory management architecture (C's :c:func:`malloc` function), the
Georg Brandl116aa622007-08-15 14:28:22 +0000234 interpreter may not always be able to completely recover from this situation; it
235 nevertheless raises an exception so that a stack traceback can be printed, in
236 case a run-away program was the cause.
237
238
239.. exception:: NameError
240
241 Raised when a local or global name is not found. This applies only to
242 unqualified names. The associated value is an error message that includes the
243 name that could not be found.
244
Pablo Galindo5bf8bf22021-04-14 15:10:33 +0100245 The :attr:`name` attribute can be set using a keyword-only argument to the
246 constructor. When set it represent the name of the variable that was attempted
247 to be accessed.
248
249 .. versionchanged:: 3.10
250 Added the :attr:`name` attribute.
251
Georg Brandl116aa622007-08-15 14:28:22 +0000252
253.. exception:: NotImplementedError
254
255 This exception is derived from :exc:`RuntimeError`. In user defined base
Ethan Furman20bd9f02016-08-05 15:10:16 -0700256 classes, abstract methods should raise this exception when they require
257 derived classes to override the method, or while the class is being
258 developed to indicate that the real implementation still needs to be added.
Georg Brandl116aa622007-08-15 14:28:22 +0000259
Ethan Furman20bd9f02016-08-05 15:10:16 -0700260 .. note::
261
delirious-lettuce3378b202017-05-19 14:37:57 -0600262 It should not be used to indicate that an operator or method is not
Ethan Furman20bd9f02016-08-05 15:10:16 -0700263 meant to be supported at all -- in that case either leave the operator /
264 method undefined or, if a subclass, set it to :data:`None`.
265
266 .. note::
267
268 ``NotImplementedError`` and ``NotImplemented`` are not interchangeable,
269 even though they have similar names and purposes. See
270 :data:`NotImplemented` for details on when to use it.
Georg Brandl116aa622007-08-15 14:28:22 +0000271
Martin Panter5487c132015-10-26 11:05:42 +0000272.. exception:: OSError([arg])
273 OSError(errno, strerror[, filename[, winerror[, filename2]]])
Georg Brandl116aa622007-08-15 14:28:22 +0000274
Christian Heimesa62da1d2008-01-12 19:39:10 +0000275 .. index:: module: errno
276
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200277 This exception is raised when a system function returns a system-related
278 error, including I/O failures such as "file not found" or "disk full"
Martin Panter5487c132015-10-26 11:05:42 +0000279 (not for illegal argument types or other incidental errors).
Christian Heimesa62da1d2008-01-12 19:39:10 +0000280
Martin Panter5487c132015-10-26 11:05:42 +0000281 The second form of the constructor sets the corresponding attributes,
282 described below. The attributes default to :const:`None` if not
283 specified. For backwards compatibility, if three arguments are passed,
284 the :attr:`~BaseException.args` attribute contains only a 2-tuple
285 of the first two constructor arguments.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200286
Martin Panter5487c132015-10-26 11:05:42 +0000287 The constructor often actually returns a subclass of :exc:`OSError`, as
288 described in `OS exceptions`_ below. The particular subclass depends on
289 the final :attr:`.errno` value. This behaviour only occurs when
290 constructing :exc:`OSError` directly or via an alias, and is not
291 inherited when subclassing.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200292
Martin Panter5487c132015-10-26 11:05:42 +0000293 .. attribute:: errno
294
295 A numeric error code from the C variable :c:data:`errno`.
296
297 .. attribute:: winerror
298
299 Under Windows, this gives you the native
300 Windows error code. The :attr:`.errno` attribute is then an approximate
301 translation, in POSIX terms, of that native error code.
302
303 Under Windows, if the *winerror* constructor argument is an integer,
304 the :attr:`.errno` attribute is determined from the Windows error code,
305 and the *errno* argument is ignored. On other platforms, the
306 *winerror* argument is ignored, and the :attr:`winerror` attribute
307 does not exist.
308
309 .. attribute:: strerror
310
311 The corresponding error message, as provided by
312 the operating system. It is formatted by the C
313 functions :c:func:`perror` under POSIX, and :c:func:`FormatMessage`
314 under Windows.
315
316 .. attribute:: filename
317 filename2
318
319 For exceptions that involve a file system path (such as :func:`open` or
320 :func:`os.unlink`), :attr:`filename` is the file name passed to the function.
321 For functions that involve two file system paths (such as
322 :func:`os.rename`), :attr:`filename2` corresponds to the second
323 file name passed to the function.
Larry Hastingsb0827312014-02-09 22:05:19 -0800324
Georg Brandl116aa622007-08-15 14:28:22 +0000325
Antoine Pitrou195e7022011-10-12 16:46:46 +0200326 .. versionchanged:: 3.3
327 :exc:`EnvironmentError`, :exc:`IOError`, :exc:`WindowsError`,
Berker Peksag8fafc742016-04-11 12:23:04 +0300328 :exc:`socket.error`, :exc:`select.error` and
Martin Panter5487c132015-10-26 11:05:42 +0000329 :exc:`mmap.error` have been merged into :exc:`OSError`, and the
330 constructor may return a subclass.
Antoine Pitrou195e7022011-10-12 16:46:46 +0200331
Victor Stinner292c8352012-10-30 02:17:38 +0100332 .. versionchanged:: 3.4
Victor Stinner292c8352012-10-30 02:17:38 +0100333 The :attr:`filename` attribute is now the original file name passed to
334 the function, instead of the name encoded to or decoded from the
Victor Stinner4b9aad42020-11-02 16:49:54 +0100335 :term:`filesystem encoding and error handler`. Also, the *filename2*
336 constructor argument and attribute was added.
Victor Stinner292c8352012-10-30 02:17:38 +0100337
Georg Brandl116aa622007-08-15 14:28:22 +0000338
339.. exception:: OverflowError
340
341 Raised when the result of an arithmetic operation is too large to be
Georg Brandlba956ae2007-11-29 17:24:34 +0000342 represented. This cannot occur for integers (which would rather raise
Terry Jan Reedyb6d1f482014-06-16 03:31:00 -0400343 :exc:`MemoryError` than give up). However, for historical reasons,
344 OverflowError is sometimes raised for integers that are outside a required
345 range. Because of the lack of standardization of floating point exception
346 handling in C, most floating point operations are not checked.
Georg Brandl116aa622007-08-15 14:28:22 +0000347
348
Yury Selivanovf488fb42015-07-03 01:04:23 -0400349.. exception:: RecursionError
350
351 This exception is derived from :exc:`RuntimeError`. It is raised when the
352 interpreter detects that the maximum recursion depth (see
353 :func:`sys.getrecursionlimit`) is exceeded.
354
355 .. versionadded:: 3.5
356 Previously, a plain :exc:`RuntimeError` was raised.
357
358
Georg Brandl116aa622007-08-15 14:28:22 +0000359.. exception:: ReferenceError
360
361 This exception is raised when a weak reference proxy, created by the
362 :func:`weakref.proxy` function, is used to access an attribute of the referent
363 after it has been garbage collected. For more information on weak references,
364 see the :mod:`weakref` module.
365
Georg Brandl116aa622007-08-15 14:28:22 +0000366
367.. exception:: RuntimeError
368
369 Raised when an error is detected that doesn't fall in any of the other
370 categories. The associated value is a string indicating what precisely went
Antoine Pitrou9527f162013-11-25 19:08:32 +0100371 wrong.
Georg Brandl116aa622007-08-15 14:28:22 +0000372
373
374.. exception:: StopIteration
375
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000376 Raised by built-in function :func:`next` and an :term:`iterator`\'s
Ezio Melotti1dd7c302012-10-12 13:45:38 +0300377 :meth:`~iterator.__next__` method to signal that there are no further
378 items produced by the iterator.
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000379
380 The exception object has a single attribute :attr:`value`, which is
381 given as an argument when constructing the exception, and defaults
382 to :const:`None`.
383
Yury Selivanov66f88282015-06-24 11:04:15 -0400384 When a :term:`generator` or :term:`coroutine` function
385 returns, a new :exc:`StopIteration` instance is
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000386 raised, and the value returned by the function is used as the
387 :attr:`value` parameter to the constructor of the exception.
Georg Brandl116aa622007-08-15 14:28:22 +0000388
Yury Selivanov43c47fe2018-01-26 15:24:24 -0500389 If a generator code directly or indirectly raises :exc:`StopIteration`,
390 it is converted into a :exc:`RuntimeError` (retaining the
391 :exc:`StopIteration` as the new exception's cause).
Yury Selivanov8170e8c2015-05-09 11:44:30 -0400392
Nick Coghlan0ed80192012-01-14 14:43:24 +1000393 .. versionchanged:: 3.3
394 Added ``value`` attribute and the ability for generator functions to
395 use it to return a value.
Georg Brandl116aa622007-08-15 14:28:22 +0000396
Yury Selivanov8170e8c2015-05-09 11:44:30 -0400397 .. versionchanged:: 3.5
Yury Selivanov43c47fe2018-01-26 15:24:24 -0500398 Introduced the RuntimeError transformation via
399 ``from __future__ import generator_stop``, see :pep:`479`.
400
401 .. versionchanged:: 3.7
402 Enable :pep:`479` for all code by default: a :exc:`StopIteration`
403 error raised in a generator is transformed into a :exc:`RuntimeError`.
Yury Selivanov8170e8c2015-05-09 11:44:30 -0400404
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400405.. exception:: StopAsyncIteration
406
407 Must be raised by :meth:`__anext__` method of an
408 :term:`asynchronous iterator` object to stop the iteration.
409
410 .. versionadded:: 3.5
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400411
Miss Islington (bot)2af690f2021-06-06 19:09:34 -0700412.. exception:: SyntaxError(message, details)
Georg Brandl116aa622007-08-15 14:28:22 +0000413
414 Raised when the parser encounters a syntax error. This may occur in an
Miss Islington (bot)2af690f2021-06-06 19:09:34 -0700415 :keyword:`import` statement, in a call to the built-in functions
416 :func:`compile`, :func:`exec`,
Georg Brandl116aa622007-08-15 14:28:22 +0000417 or :func:`eval`, or when reading the initial script or standard input
418 (also interactively).
419
Ammar Askarb2a91e02021-04-02 17:25:31 -0400420 The :func:`str` of the exception instance returns only the error message.
Miss Islington (bot)2af690f2021-06-06 19:09:34 -0700421 Details is a tuple whose members are also available as separate attributes.
Ammar Askarb2a91e02021-04-02 17:25:31 -0400422
423 .. attribute:: filename
424
425 The name of the file the syntax error occurred in.
426
427 .. attribute:: lineno
428
429 Which line number in the file the error occurred in. This is
430 1-indexed: the first line in the file has a ``lineno`` of 1.
431
432 .. attribute:: offset
433
434 The column in the line where the error occurred. This is
435 1-indexed: the first character in the line has an ``offset`` of 1.
436
437 .. attribute:: text
438
439 The source code text involved in the error.
Georg Brandl116aa622007-08-15 14:28:22 +0000440
Pablo Galindoa77aac42021-04-23 14:27:05 +0100441 .. attribute:: end_lineno
442
443 Which line number in the file the error occurred ends in. This is
444 1-indexed: the first line in the file has a ``lineno`` of 1.
445
446 .. attribute:: end_offset
447
448 The column in the end line where the error occurred finishes. This is
449 1-indexed: the first character in the line has an ``offset`` of 1.
450
Miss Islington (bot)2af690f2021-06-06 19:09:34 -0700451 For errors in f-string fields, the message is prefixed by "f-string: "
452 and the offsets are offsets in a text constructed from the replacement
453 expression. For example, compiling f'Bad {a b} field' results in this
454 args attribute: ('f-string: ...', ('', 1, 2, '(a b)\n', 1, 5)).
455
Pablo Galindoa77aac42021-04-23 14:27:05 +0100456 .. versionchanged:: 3.10
457 Added the :attr:`end_lineno` and :attr:`end_offset` attributes.
Georg Brandl116aa622007-08-15 14:28:22 +0000458
Georg Brandl0bdfbfa2010-12-18 17:51:28 +0000459.. exception:: IndentationError
460
461 Base class for syntax errors related to incorrect indentation. This is a
462 subclass of :exc:`SyntaxError`.
463
464
465.. exception:: TabError
466
467 Raised when indentation contains an inconsistent use of tabs and spaces.
468 This is a subclass of :exc:`IndentationError`.
469
470
Georg Brandl116aa622007-08-15 14:28:22 +0000471.. exception:: SystemError
472
473 Raised when the interpreter finds an internal error, but the situation does not
474 look so serious to cause it to abandon all hope. The associated value is a
475 string indicating what went wrong (in low-level terms).
476
477 You should report this to the author or maintainer of your Python interpreter.
478 Be sure to report the version of the Python interpreter (``sys.version``; it is
479 also printed at the start of an interactive Python session), the exact error
480 message (the exception's associated value) and if possible the source of the
481 program that triggered the error.
482
483
484.. exception:: SystemExit
485
Berker Peksag77a6b202015-03-10 14:47:15 +0200486 This exception is raised by the :func:`sys.exit` function. It inherits from
487 :exc:`BaseException` instead of :exc:`Exception` so that it is not accidentally
488 caught by code that catches :exc:`Exception`. This allows the exception to
489 properly propagate up and cause the interpreter to exit. When it is not
490 handled, the Python interpreter exits; no stack traceback is printed. The
491 constructor accepts the same optional argument passed to :func:`sys.exit`.
492 If the value is an integer, it specifies the system exit status (passed to
493 C's :c:func:`exit` function); if it is ``None``, the exit status is zero; if
494 it has another type (such as a string), the object's value is printed and
Georg Brandl95817b32008-05-11 14:30:18 +0000495 the exit status is one.
Georg Brandl116aa622007-08-15 14:28:22 +0000496
Georg Brandl116aa622007-08-15 14:28:22 +0000497 A call to :func:`sys.exit` is translated into an exception so that clean-up
498 handlers (:keyword:`finally` clauses of :keyword:`try` statements) can be
499 executed, and so that a debugger can execute a script without running the risk
500 of losing control. The :func:`os._exit` function can be used if it is
501 absolutely positively necessary to exit immediately (for example, in the child
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300502 process after a call to :func:`os.fork`).
Georg Brandl116aa622007-08-15 14:28:22 +0000503
Berker Peksag77a6b202015-03-10 14:47:15 +0200504 .. attribute:: code
505
506 The exit status or error message that is passed to the constructor.
507 (Defaults to ``None``.)
Georg Brandl116aa622007-08-15 14:28:22 +0000508
Georg Brandl116aa622007-08-15 14:28:22 +0000509
510.. exception:: TypeError
511
512 Raised when an operation or function is applied to an object of inappropriate
513 type. The associated value is a string giving details about the type mismatch.
514
Ethan Furman20bd9f02016-08-05 15:10:16 -0700515 This exception may be raised by user code to indicate that an attempted
516 operation on an object is not supported, and is not meant to be. If an object
517 is meant to support a given operation but has not yet provided an
518 implementation, :exc:`NotImplementedError` is the proper exception to raise.
519
520 Passing arguments of the wrong type (e.g. passing a :class:`list` when an
521 :class:`int` is expected) should result in a :exc:`TypeError`, but passing
522 arguments with the wrong value (e.g. a number outside expected boundaries)
523 should result in a :exc:`ValueError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000524
525.. exception:: UnboundLocalError
526
527 Raised when a reference is made to a local variable in a function or method, but
528 no value has been bound to that variable. This is a subclass of
529 :exc:`NameError`.
530
Georg Brandl116aa622007-08-15 14:28:22 +0000531
532.. exception:: UnicodeError
533
534 Raised when a Unicode-related encoding or decoding error occurs. It is a
535 subclass of :exc:`ValueError`.
536
Benjamin Peterson78f7e3a2012-12-02 11:33:06 -0500537 :exc:`UnicodeError` has attributes that describe the encoding or decoding
538 error. For example, ``err.object[err.start:err.end]`` gives the particular
539 invalid input that the codec failed on.
540
541 .. attribute:: encoding
542
543 The name of the encoding that raised the error.
544
545 .. attribute:: reason
546
547 A string describing the specific codec error.
548
549 .. attribute:: object
550
551 The object the codec was attempting to encode or decode.
552
553 .. attribute:: start
554
555 The first index of invalid data in :attr:`object`.
556
557 .. attribute:: end
558
559 The index after the last invalid data in :attr:`object`.
560
Georg Brandl116aa622007-08-15 14:28:22 +0000561
562.. exception:: UnicodeEncodeError
563
564 Raised when a Unicode-related error occurs during encoding. It is a subclass of
565 :exc:`UnicodeError`.
566
Georg Brandl116aa622007-08-15 14:28:22 +0000567
568.. exception:: UnicodeDecodeError
569
570 Raised when a Unicode-related error occurs during decoding. It is a subclass of
571 :exc:`UnicodeError`.
572
Georg Brandl116aa622007-08-15 14:28:22 +0000573
574.. exception:: UnicodeTranslateError
575
576 Raised when a Unicode-related error occurs during translating. It is a subclass
577 of :exc:`UnicodeError`.
578
Georg Brandl116aa622007-08-15 14:28:22 +0000579
580.. exception:: ValueError
581
Raymond Hettingerfeabae92018-07-17 08:35:26 -0700582 Raised when an operation or function receives an argument that has the
Georg Brandl116aa622007-08-15 14:28:22 +0000583 right type but an inappropriate value, and the situation is not described by a
584 more precise exception such as :exc:`IndexError`.
585
586
Georg Brandl116aa622007-08-15 14:28:22 +0000587.. exception:: ZeroDivisionError
588
589 Raised when the second argument of a division or modulo operation is zero. The
590 associated value is a string indicating the type of the operands and the
591 operation.
592
Georg Brandlfbd1b222009-12-29 21:38:35 +0000593
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200594The following exceptions are kept for compatibility with previous versions;
595starting from Python 3.3, they are aliases of :exc:`OSError`.
596
597.. exception:: EnvironmentError
598
599.. exception:: IOError
600
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200601.. exception:: WindowsError
602
603 Only available on Windows.
604
605
606OS exceptions
607^^^^^^^^^^^^^
608
609The following exceptions are subclasses of :exc:`OSError`, they get raised
610depending on the system error code.
611
612.. exception:: BlockingIOError
613
614 Raised when an operation would block on an object (e.g. socket) set
615 for non-blocking operation.
616 Corresponds to :c:data:`errno` ``EAGAIN``, ``EALREADY``,
617 ``EWOULDBLOCK`` and ``EINPROGRESS``.
618
Antoine Pitrouf55011f2011-10-12 18:57:23 +0200619 In addition to those of :exc:`OSError`, :exc:`BlockingIOError` can have
620 one more attribute:
621
622 .. attribute:: characters_written
623
624 An integer containing the number of characters written to the stream
625 before it blocked. This attribute is available when using the
626 buffered I/O classes from the :mod:`io` module.
627
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200628.. exception:: ChildProcessError
629
630 Raised when an operation on a child process failed.
631 Corresponds to :c:data:`errno` ``ECHILD``.
632
633.. exception:: ConnectionError
634
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300635 A base class for connection-related issues.
636
637 Subclasses are :exc:`BrokenPipeError`, :exc:`ConnectionAbortedError`,
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200638 :exc:`ConnectionRefusedError` and :exc:`ConnectionResetError`.
639
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300640.. exception:: BrokenPipeError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200641
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300642 A subclass of :exc:`ConnectionError`, raised when trying to write on a
643 pipe while the other end has been closed, or trying to write on a socket
644 which has been shutdown for writing.
645 Corresponds to :c:data:`errno` ``EPIPE`` and ``ESHUTDOWN``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200646
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300647.. exception:: ConnectionAbortedError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200648
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300649 A subclass of :exc:`ConnectionError`, raised when a connection attempt
650 is aborted by the peer.
651 Corresponds to :c:data:`errno` ``ECONNABORTED``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200652
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300653.. exception:: ConnectionRefusedError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200654
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300655 A subclass of :exc:`ConnectionError`, raised when a connection attempt
656 is refused by the peer.
657 Corresponds to :c:data:`errno` ``ECONNREFUSED``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200658
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300659.. exception:: ConnectionResetError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200660
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300661 A subclass of :exc:`ConnectionError`, raised when a connection is
662 reset by the peer.
663 Corresponds to :c:data:`errno` ``ECONNRESET``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200664
665.. exception:: FileExistsError
666
667 Raised when trying to create a file or directory which already exists.
668 Corresponds to :c:data:`errno` ``EEXIST``.
669
670.. exception:: FileNotFoundError
671
672 Raised when a file or directory is requested but doesn't exist.
673 Corresponds to :c:data:`errno` ``ENOENT``.
674
675.. exception:: InterruptedError
676
677 Raised when a system call is interrupted by an incoming signal.
Victor Stinnerf70e1ca2015-03-30 21:16:11 +0200678 Corresponds to :c:data:`errno` :py:data:`~errno.EINTR`.
679
680 .. versionchanged:: 3.5
681 Python now retries system calls when a syscall is interrupted by a
682 signal, except if the signal handler raises an exception (see :pep:`475`
683 for the rationale), instead of raising :exc:`InterruptedError`.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200684
685.. exception:: IsADirectoryError
686
687 Raised when a file operation (such as :func:`os.remove`) is requested
688 on a directory.
689 Corresponds to :c:data:`errno` ``EISDIR``.
690
691.. exception:: NotADirectoryError
692
Miss Islington (bot)84494db2021-08-03 05:05:04 -0700693 Raised when a directory operation (such as :func:`os.listdir`) is requested on
694 something which is not a directory. On most POSIX platforms, it may also be
695 raised if an operation attempts to open or traverse a non-directory file as if
696 it were a directory.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200697 Corresponds to :c:data:`errno` ``ENOTDIR``.
698
699.. exception:: PermissionError
700
701 Raised when trying to run an operation without the adequate access
702 rights - for example filesystem permissions.
703 Corresponds to :c:data:`errno` ``EACCES`` and ``EPERM``.
704
705.. exception:: ProcessLookupError
706
707 Raised when a given process doesn't exist.
708 Corresponds to :c:data:`errno` ``ESRCH``.
709
710.. exception:: TimeoutError
711
712 Raised when a system function timed out at the system level.
713 Corresponds to :c:data:`errno` ``ETIMEDOUT``.
714
715.. versionadded:: 3.3
716 All the above :exc:`OSError` subclasses were added.
717
718
719.. seealso::
720
721 :pep:`3151` - Reworking the OS and IO exception hierarchy
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200722
723
Nick Coghlan9b997472018-01-08 12:45:02 +1000724.. _warning-categories-as-exceptions:
725
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200726Warnings
727--------
728
Nick Coghlan9b997472018-01-08 12:45:02 +1000729The following exceptions are used as warning categories; see the
730:ref:`warning-categories` documentation for more details.
Georg Brandl116aa622007-08-15 14:28:22 +0000731
Georg Brandl116aa622007-08-15 14:28:22 +0000732.. exception:: Warning
733
734 Base class for warning categories.
735
736
737.. exception:: UserWarning
738
739 Base class for warnings generated by user code.
740
741
742.. exception:: DeprecationWarning
743
Nick Coghlan9b997472018-01-08 12:45:02 +1000744 Base class for warnings about deprecated features when those warnings are
745 intended for other Python developers.
Georg Brandl116aa622007-08-15 14:28:22 +0000746
Victor Stinnerb9783d22020-01-24 10:22:18 +0100747 Ignored by the default warning filters, except in the ``__main__`` module
748 (:pep:`565`). Enabling the :ref:`Python Development Mode <devmode>` shows
749 this warning.
750
Georg Brandl116aa622007-08-15 14:28:22 +0000751
752.. exception:: PendingDeprecationWarning
753
Inada Naokia3283ef2019-04-15 21:40:23 +0900754 Base class for warnings about features which are obsolete and
755 expected to be deprecated in the future, but are not deprecated
756 at the moment.
Georg Brandl116aa622007-08-15 14:28:22 +0000757
Inada Naokia3283ef2019-04-15 21:40:23 +0900758 This class is rarely used as emitting a warning about a possible
759 upcoming deprecation is unusual, and :exc:`DeprecationWarning`
760 is preferred for already active deprecations.
Inada Naoki176d2632019-04-05 17:54:24 +0900761
Victor Stinnerb9783d22020-01-24 10:22:18 +0100762 Ignored by the default warning filters. Enabling the :ref:`Python
763 Development Mode <devmode>` shows this warning.
764
Georg Brandl116aa622007-08-15 14:28:22 +0000765
766.. exception:: SyntaxWarning
767
Martin Panterd21e0b52015-10-10 10:36:22 +0000768 Base class for warnings about dubious syntax.
Georg Brandl116aa622007-08-15 14:28:22 +0000769
770
771.. exception:: RuntimeWarning
772
773 Base class for warnings about dubious runtime behavior.
774
775
776.. exception:: FutureWarning
777
Nick Coghlan9b997472018-01-08 12:45:02 +1000778 Base class for warnings about deprecated features when those warnings are
779 intended for end users of applications that are written in Python.
Georg Brandl116aa622007-08-15 14:28:22 +0000780
781
782.. exception:: ImportWarning
783
784 Base class for warnings about probable mistakes in module imports.
785
Victor Stinnerb9783d22020-01-24 10:22:18 +0100786 Ignored by the default warning filters. Enabling the :ref:`Python
787 Development Mode <devmode>` shows this warning.
788
Georg Brandl116aa622007-08-15 14:28:22 +0000789
790.. exception:: UnicodeWarning
791
792 Base class for warnings related to Unicode.
793
Georg Brandl08be72d2010-10-24 15:11:22 +0000794
Inada Naoki48274832021-03-29 12:28:14 +0900795.. exception:: EncodingWarning
796
797 Base class for warnings related to encodings.
798
799 See :ref:`io-encoding-warning` for details.
800
801 .. versionadded:: 3.10
802
803
Guido van Rossum98297ee2007-11-06 21:34:58 +0000804.. exception:: BytesWarning
Georg Brandl116aa622007-08-15 14:28:22 +0000805
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300806 Base class for warnings related to :class:`bytes` and :class:`bytearray`.
Guido van Rossum98297ee2007-11-06 21:34:58 +0000807
Georg Brandl08be72d2010-10-24 15:11:22 +0000808
809.. exception:: ResourceWarning
810
Victor Stinnerb9783d22020-01-24 10:22:18 +0100811 Base class for warnings related to resource usage.
812
813 Ignored by the default warning filters. Enabling the :ref:`Python
814 Development Mode <devmode>` shows this warning.
Georg Brandl08be72d2010-10-24 15:11:22 +0000815
816 .. versionadded:: 3.2
817
818
819
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +0000820Exception hierarchy
821-------------------
Guido van Rossum98297ee2007-11-06 21:34:58 +0000822
823The class hierarchy for built-in exceptions is:
Georg Brandl116aa622007-08-15 14:28:22 +0000824
825.. literalinclude:: ../../Lib/test/exception_hierarchy.txt