blob: e33b88673f75335f819794ebe2732ccbda3ea0d6 [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
55purposes (e.g. converting :exc:`KeyError` to :exc:`AttributeError`, while
56leaving 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
93 the exception object. It is usually used in exception handling code like
94 this::
95
96 try:
97 ...
98 except SomeException:
99 tb = sys.exc_info()[2]
100 raise OtherException(...).with_traceback(tb)
Georg Brandl116aa622007-08-15 14:28:22 +0000101
Georg Brandl116aa622007-08-15 14:28:22 +0000102
103.. exception:: Exception
104
105 All built-in, non-system-exiting exceptions are derived from this class. All
106 user-defined exceptions should also be derived from this class.
107
Georg Brandl116aa622007-08-15 14:28:22 +0000108
109.. exception:: ArithmeticError
110
111 The base class for those built-in exceptions that are raised for various
112 arithmetic errors: :exc:`OverflowError`, :exc:`ZeroDivisionError`,
113 :exc:`FloatingPointError`.
114
115
Georg Brandl0bdfbfa2010-12-18 17:51:28 +0000116.. exception:: BufferError
117
118 Raised when a :ref:`buffer <bufferobjects>` related operation cannot be
119 performed.
120
121
Georg Brandl116aa622007-08-15 14:28:22 +0000122.. exception:: LookupError
123
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000124 The base class for the exceptions that are raised when a key or index used on
125 a mapping or sequence is invalid: :exc:`IndexError`, :exc:`KeyError`. This
126 can be raised directly by :func:`codecs.lookup`.
Georg Brandl116aa622007-08-15 14:28:22 +0000127
128
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200129Concrete exceptions
130-------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000131
Georg Brandlfbd1b222009-12-29 21:38:35 +0000132The following exceptions are the exceptions that are usually raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000133
134.. exception:: AssertionError
135
136 .. index:: statement: assert
137
138 Raised when an :keyword:`assert` statement fails.
139
140
141.. exception:: AttributeError
142
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000143 Raised when an attribute reference (see :ref:`attribute-references`) or
144 assignment fails. (When an object does not support attribute references or
145 attribute assignments at all, :exc:`TypeError` is raised.)
Georg Brandl116aa622007-08-15 14:28:22 +0000146
147
148.. exception:: EOFError
149
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300150 Raised when the :func:`input` function hits an end-of-file condition (EOF)
151 without reading any data. (N.B.: the :meth:`io.IOBase.read` and
152 :meth:`io.IOBase.readline` methods return an empty string when they hit EOF.)
Georg Brandl116aa622007-08-15 14:28:22 +0000153
154
155.. exception:: FloatingPointError
156
Nathaniel J. Smith735ae8d2018-01-05 23:15:34 -0800157 Not currently used.
Georg Brandl116aa622007-08-15 14:28:22 +0000158
159
160.. exception:: GeneratorExit
161
Yury Selivanov66f88282015-06-24 11:04:15 -0400162 Raised when a :term:`generator` or :term:`coroutine` is closed;
163 see :meth:`generator.close` and :meth:`coroutine.close`. It
Christian Heimescbf3b5c2007-12-03 21:02:03 +0000164 directly inherits from :exc:`BaseException` instead of :exc:`Exception` since
165 it is technically not an error.
Georg Brandl116aa622007-08-15 14:28:22 +0000166
Georg Brandl116aa622007-08-15 14:28:22 +0000167
Georg Brandl116aa622007-08-15 14:28:22 +0000168.. exception:: ImportError
169
Eric Snowc9432652016-09-07 15:42:32 -0700170 Raised when the :keyword:`import` statement has troubles trying to
171 load a module. Also raised when the "from list" in ``from ... import``
172 has a name that cannot be found.
Georg Brandl116aa622007-08-15 14:28:22 +0000173
Brett Cannon79ec55e2012-04-12 20:24:54 -0400174 The :attr:`name` and :attr:`path` attributes can be set using keyword-only
175 arguments to the constructor. When set they represent the name of the module
176 that was attempted to be imported and the path to any file which triggered
177 the exception, respectively.
178
179 .. versionchanged:: 3.3
180 Added the :attr:`name` and :attr:`path` attributes.
181
Eric Snowc9432652016-09-07 15:42:32 -0700182.. exception:: ModuleNotFoundError
183
184 A subclass of :exc:`ImportError` which is raised by :keyword:`import`
185 when a module could not be located. It is also raised when ``None``
186 is found in :data:`sys.modules`.
187
188 .. versionadded:: 3.6
189
Georg Brandl116aa622007-08-15 14:28:22 +0000190
191.. exception:: IndexError
192
Georg Brandl95817b32008-05-11 14:30:18 +0000193 Raised when a sequence subscript is out of range. (Slice indices are
194 silently truncated to fall in the allowed range; if an index is not an
195 integer, :exc:`TypeError` is raised.)
Georg Brandl116aa622007-08-15 14:28:22 +0000196
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000197 .. XXX xref to sequences
Georg Brandl116aa622007-08-15 14:28:22 +0000198
199
200.. exception:: KeyError
201
202 Raised when a mapping (dictionary) key is not found in the set of existing keys.
203
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000204 .. XXX xref to mapping objects?
Georg Brandl116aa622007-08-15 14:28:22 +0000205
206
207.. exception:: KeyboardInterrupt
208
209 Raised when the user hits the interrupt key (normally :kbd:`Control-C` or
Georg Brandl81ac1ce2007-08-31 17:17:17 +0000210 :kbd:`Delete`). During execution, a check for interrupts is made
211 regularly. The exception inherits from :exc:`BaseException` so as to not be
212 accidentally caught by code that catches :exc:`Exception` and thus prevent
213 the interpreter from exiting.
Georg Brandl116aa622007-08-15 14:28:22 +0000214
Georg Brandl116aa622007-08-15 14:28:22 +0000215
216.. exception:: MemoryError
217
218 Raised when an operation runs out of memory but the situation may still be
219 rescued (by deleting some objects). The associated value is a string indicating
220 what kind of (internal) operation ran out of memory. Note that because of the
Georg Brandl60203b42010-10-06 10:11:56 +0000221 underlying memory management architecture (C's :c:func:`malloc` function), the
Georg Brandl116aa622007-08-15 14:28:22 +0000222 interpreter may not always be able to completely recover from this situation; it
223 nevertheless raises an exception so that a stack traceback can be printed, in
224 case a run-away program was the cause.
225
226
227.. exception:: NameError
228
229 Raised when a local or global name is not found. This applies only to
230 unqualified names. The associated value is an error message that includes the
231 name that could not be found.
232
233
234.. exception:: NotImplementedError
235
236 This exception is derived from :exc:`RuntimeError`. In user defined base
Ethan Furman20bd9f02016-08-05 15:10:16 -0700237 classes, abstract methods should raise this exception when they require
238 derived classes to override the method, or while the class is being
239 developed to indicate that the real implementation still needs to be added.
Georg Brandl116aa622007-08-15 14:28:22 +0000240
Ethan Furman20bd9f02016-08-05 15:10:16 -0700241 .. note::
242
delirious-lettuce3378b202017-05-19 14:37:57 -0600243 It should not be used to indicate that an operator or method is not
Ethan Furman20bd9f02016-08-05 15:10:16 -0700244 meant to be supported at all -- in that case either leave the operator /
245 method undefined or, if a subclass, set it to :data:`None`.
246
247 .. note::
248
249 ``NotImplementedError`` and ``NotImplemented`` are not interchangeable,
250 even though they have similar names and purposes. See
251 :data:`NotImplemented` for details on when to use it.
Georg Brandl116aa622007-08-15 14:28:22 +0000252
Martin Panter5487c132015-10-26 11:05:42 +0000253.. exception:: OSError([arg])
254 OSError(errno, strerror[, filename[, winerror[, filename2]]])
Georg Brandl116aa622007-08-15 14:28:22 +0000255
Christian Heimesa62da1d2008-01-12 19:39:10 +0000256 .. index:: module: errno
257
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200258 This exception is raised when a system function returns a system-related
259 error, including I/O failures such as "file not found" or "disk full"
Martin Panter5487c132015-10-26 11:05:42 +0000260 (not for illegal argument types or other incidental errors).
Christian Heimesa62da1d2008-01-12 19:39:10 +0000261
Martin Panter5487c132015-10-26 11:05:42 +0000262 The second form of the constructor sets the corresponding attributes,
263 described below. The attributes default to :const:`None` if not
264 specified. For backwards compatibility, if three arguments are passed,
265 the :attr:`~BaseException.args` attribute contains only a 2-tuple
266 of the first two constructor arguments.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200267
Martin Panter5487c132015-10-26 11:05:42 +0000268 The constructor often actually returns a subclass of :exc:`OSError`, as
269 described in `OS exceptions`_ below. The particular subclass depends on
270 the final :attr:`.errno` value. This behaviour only occurs when
271 constructing :exc:`OSError` directly or via an alias, and is not
272 inherited when subclassing.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200273
Martin Panter5487c132015-10-26 11:05:42 +0000274 .. attribute:: errno
275
276 A numeric error code from the C variable :c:data:`errno`.
277
278 .. attribute:: winerror
279
280 Under Windows, this gives you the native
281 Windows error code. The :attr:`.errno` attribute is then an approximate
282 translation, in POSIX terms, of that native error code.
283
284 Under Windows, if the *winerror* constructor argument is an integer,
285 the :attr:`.errno` attribute is determined from the Windows error code,
286 and the *errno* argument is ignored. On other platforms, the
287 *winerror* argument is ignored, and the :attr:`winerror` attribute
288 does not exist.
289
290 .. attribute:: strerror
291
292 The corresponding error message, as provided by
293 the operating system. It is formatted by the C
294 functions :c:func:`perror` under POSIX, and :c:func:`FormatMessage`
295 under Windows.
296
297 .. attribute:: filename
298 filename2
299
300 For exceptions that involve a file system path (such as :func:`open` or
301 :func:`os.unlink`), :attr:`filename` is the file name passed to the function.
302 For functions that involve two file system paths (such as
303 :func:`os.rename`), :attr:`filename2` corresponds to the second
304 file name passed to the function.
Larry Hastingsb0827312014-02-09 22:05:19 -0800305
Georg Brandl116aa622007-08-15 14:28:22 +0000306
Antoine Pitrou195e7022011-10-12 16:46:46 +0200307 .. versionchanged:: 3.3
308 :exc:`EnvironmentError`, :exc:`IOError`, :exc:`WindowsError`,
Berker Peksag8fafc742016-04-11 12:23:04 +0300309 :exc:`socket.error`, :exc:`select.error` and
Martin Panter5487c132015-10-26 11:05:42 +0000310 :exc:`mmap.error` have been merged into :exc:`OSError`, and the
311 constructor may return a subclass.
Antoine Pitrou195e7022011-10-12 16:46:46 +0200312
Victor Stinner292c8352012-10-30 02:17:38 +0100313 .. versionchanged:: 3.4
Victor Stinner292c8352012-10-30 02:17:38 +0100314 The :attr:`filename` attribute is now the original file name passed to
315 the function, instead of the name encoded to or decoded from the
Martin Panter5487c132015-10-26 11:05:42 +0000316 filesystem encoding. Also, the *filename2* constructor argument and
317 attribute was added.
Victor Stinner292c8352012-10-30 02:17:38 +0100318
Georg Brandl116aa622007-08-15 14:28:22 +0000319
320.. exception:: OverflowError
321
322 Raised when the result of an arithmetic operation is too large to be
Georg Brandlba956ae2007-11-29 17:24:34 +0000323 represented. This cannot occur for integers (which would rather raise
Terry Jan Reedyb6d1f482014-06-16 03:31:00 -0400324 :exc:`MemoryError` than give up). However, for historical reasons,
325 OverflowError is sometimes raised for integers that are outside a required
326 range. Because of the lack of standardization of floating point exception
327 handling in C, most floating point operations are not checked.
Georg Brandl116aa622007-08-15 14:28:22 +0000328
329
Yury Selivanovf488fb42015-07-03 01:04:23 -0400330.. exception:: RecursionError
331
332 This exception is derived from :exc:`RuntimeError`. It is raised when the
333 interpreter detects that the maximum recursion depth (see
334 :func:`sys.getrecursionlimit`) is exceeded.
335
336 .. versionadded:: 3.5
337 Previously, a plain :exc:`RuntimeError` was raised.
338
339
Georg Brandl116aa622007-08-15 14:28:22 +0000340.. exception:: ReferenceError
341
342 This exception is raised when a weak reference proxy, created by the
343 :func:`weakref.proxy` function, is used to access an attribute of the referent
344 after it has been garbage collected. For more information on weak references,
345 see the :mod:`weakref` module.
346
Georg Brandl116aa622007-08-15 14:28:22 +0000347
348.. exception:: RuntimeError
349
350 Raised when an error is detected that doesn't fall in any of the other
351 categories. The associated value is a string indicating what precisely went
Antoine Pitrou9527f162013-11-25 19:08:32 +0100352 wrong.
Georg Brandl116aa622007-08-15 14:28:22 +0000353
354
355.. exception:: StopIteration
356
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000357 Raised by built-in function :func:`next` and an :term:`iterator`\'s
Ezio Melotti1dd7c302012-10-12 13:45:38 +0300358 :meth:`~iterator.__next__` method to signal that there are no further
359 items produced by the iterator.
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000360
361 The exception object has a single attribute :attr:`value`, which is
362 given as an argument when constructing the exception, and defaults
363 to :const:`None`.
364
Yury Selivanov66f88282015-06-24 11:04:15 -0400365 When a :term:`generator` or :term:`coroutine` function
366 returns, a new :exc:`StopIteration` instance is
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000367 raised, and the value returned by the function is used as the
368 :attr:`value` parameter to the constructor of the exception.
Georg Brandl116aa622007-08-15 14:28:22 +0000369
Yury Selivanov43c47fe2018-01-26 15:24:24 -0500370 If a generator code directly or indirectly raises :exc:`StopIteration`,
371 it is converted into a :exc:`RuntimeError` (retaining the
372 :exc:`StopIteration` as the new exception's cause).
Yury Selivanov8170e8c2015-05-09 11:44:30 -0400373
Nick Coghlan0ed80192012-01-14 14:43:24 +1000374 .. versionchanged:: 3.3
375 Added ``value`` attribute and the ability for generator functions to
376 use it to return a value.
Georg Brandl116aa622007-08-15 14:28:22 +0000377
Yury Selivanov8170e8c2015-05-09 11:44:30 -0400378 .. versionchanged:: 3.5
Yury Selivanov43c47fe2018-01-26 15:24:24 -0500379 Introduced the RuntimeError transformation via
380 ``from __future__ import generator_stop``, see :pep:`479`.
381
382 .. versionchanged:: 3.7
383 Enable :pep:`479` for all code by default: a :exc:`StopIteration`
384 error raised in a generator is transformed into a :exc:`RuntimeError`.
Yury Selivanov8170e8c2015-05-09 11:44:30 -0400385
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400386.. exception:: StopAsyncIteration
387
388 Must be raised by :meth:`__anext__` method of an
389 :term:`asynchronous iterator` object to stop the iteration.
390
391 .. versionadded:: 3.5
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400392
Georg Brandl116aa622007-08-15 14:28:22 +0000393.. exception:: SyntaxError
394
395 Raised when the parser encounters a syntax error. This may occur in an
396 :keyword:`import` statement, in a call to the built-in functions :func:`exec`
397 or :func:`eval`, or when reading the initial script or standard input
398 (also interactively).
399
Georg Brandl116aa622007-08-15 14:28:22 +0000400 Instances of this class have attributes :attr:`filename`, :attr:`lineno`,
401 :attr:`offset` and :attr:`text` for easier access to the details. :func:`str`
402 of the exception instance returns only the message.
403
404
Georg Brandl0bdfbfa2010-12-18 17:51:28 +0000405.. exception:: IndentationError
406
407 Base class for syntax errors related to incorrect indentation. This is a
408 subclass of :exc:`SyntaxError`.
409
410
411.. exception:: TabError
412
413 Raised when indentation contains an inconsistent use of tabs and spaces.
414 This is a subclass of :exc:`IndentationError`.
415
416
Georg Brandl116aa622007-08-15 14:28:22 +0000417.. exception:: SystemError
418
419 Raised when the interpreter finds an internal error, but the situation does not
420 look so serious to cause it to abandon all hope. The associated value is a
421 string indicating what went wrong (in low-level terms).
422
423 You should report this to the author or maintainer of your Python interpreter.
424 Be sure to report the version of the Python interpreter (``sys.version``; it is
425 also printed at the start of an interactive Python session), the exact error
426 message (the exception's associated value) and if possible the source of the
427 program that triggered the error.
428
429
430.. exception:: SystemExit
431
Berker Peksag77a6b202015-03-10 14:47:15 +0200432 This exception is raised by the :func:`sys.exit` function. It inherits from
433 :exc:`BaseException` instead of :exc:`Exception` so that it is not accidentally
434 caught by code that catches :exc:`Exception`. This allows the exception to
435 properly propagate up and cause the interpreter to exit. When it is not
436 handled, the Python interpreter exits; no stack traceback is printed. The
437 constructor accepts the same optional argument passed to :func:`sys.exit`.
438 If the value is an integer, it specifies the system exit status (passed to
439 C's :c:func:`exit` function); if it is ``None``, the exit status is zero; if
440 it has another type (such as a string), the object's value is printed and
Georg Brandl95817b32008-05-11 14:30:18 +0000441 the exit status is one.
Georg Brandl116aa622007-08-15 14:28:22 +0000442
Georg Brandl116aa622007-08-15 14:28:22 +0000443 A call to :func:`sys.exit` is translated into an exception so that clean-up
444 handlers (:keyword:`finally` clauses of :keyword:`try` statements) can be
445 executed, and so that a debugger can execute a script without running the risk
446 of losing control. The :func:`os._exit` function can be used if it is
447 absolutely positively necessary to exit immediately (for example, in the child
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300448 process after a call to :func:`os.fork`).
Georg Brandl116aa622007-08-15 14:28:22 +0000449
Berker Peksag77a6b202015-03-10 14:47:15 +0200450 .. attribute:: code
451
452 The exit status or error message that is passed to the constructor.
453 (Defaults to ``None``.)
Georg Brandl116aa622007-08-15 14:28:22 +0000454
Georg Brandl116aa622007-08-15 14:28:22 +0000455
456.. exception:: TypeError
457
458 Raised when an operation or function is applied to an object of inappropriate
459 type. The associated value is a string giving details about the type mismatch.
460
Ethan Furman20bd9f02016-08-05 15:10:16 -0700461 This exception may be raised by user code to indicate that an attempted
462 operation on an object is not supported, and is not meant to be. If an object
463 is meant to support a given operation but has not yet provided an
464 implementation, :exc:`NotImplementedError` is the proper exception to raise.
465
466 Passing arguments of the wrong type (e.g. passing a :class:`list` when an
467 :class:`int` is expected) should result in a :exc:`TypeError`, but passing
468 arguments with the wrong value (e.g. a number outside expected boundaries)
469 should result in a :exc:`ValueError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000470
471.. exception:: UnboundLocalError
472
473 Raised when a reference is made to a local variable in a function or method, but
474 no value has been bound to that variable. This is a subclass of
475 :exc:`NameError`.
476
Georg Brandl116aa622007-08-15 14:28:22 +0000477
478.. exception:: UnicodeError
479
480 Raised when a Unicode-related encoding or decoding error occurs. It is a
481 subclass of :exc:`ValueError`.
482
Benjamin Peterson78f7e3a2012-12-02 11:33:06 -0500483 :exc:`UnicodeError` has attributes that describe the encoding or decoding
484 error. For example, ``err.object[err.start:err.end]`` gives the particular
485 invalid input that the codec failed on.
486
487 .. attribute:: encoding
488
489 The name of the encoding that raised the error.
490
491 .. attribute:: reason
492
493 A string describing the specific codec error.
494
495 .. attribute:: object
496
497 The object the codec was attempting to encode or decode.
498
499 .. attribute:: start
500
501 The first index of invalid data in :attr:`object`.
502
503 .. attribute:: end
504
505 The index after the last invalid data in :attr:`object`.
506
Georg Brandl116aa622007-08-15 14:28:22 +0000507
508.. exception:: UnicodeEncodeError
509
510 Raised when a Unicode-related error occurs during encoding. It is a subclass of
511 :exc:`UnicodeError`.
512
Georg Brandl116aa622007-08-15 14:28:22 +0000513
514.. exception:: UnicodeDecodeError
515
516 Raised when a Unicode-related error occurs during decoding. It is a subclass of
517 :exc:`UnicodeError`.
518
Georg Brandl116aa622007-08-15 14:28:22 +0000519
520.. exception:: UnicodeTranslateError
521
522 Raised when a Unicode-related error occurs during translating. It is a subclass
523 of :exc:`UnicodeError`.
524
Georg Brandl116aa622007-08-15 14:28:22 +0000525
526.. exception:: ValueError
527
Raymond Hettingerfeabae92018-07-17 08:35:26 -0700528 Raised when an operation or function receives an argument that has the
Georg Brandl116aa622007-08-15 14:28:22 +0000529 right type but an inappropriate value, and the situation is not described by a
530 more precise exception such as :exc:`IndexError`.
531
532
Georg Brandl116aa622007-08-15 14:28:22 +0000533.. exception:: ZeroDivisionError
534
535 Raised when the second argument of a division or modulo operation is zero. The
536 associated value is a string indicating the type of the operands and the
537 operation.
538
Georg Brandlfbd1b222009-12-29 21:38:35 +0000539
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200540The following exceptions are kept for compatibility with previous versions;
541starting from Python 3.3, they are aliases of :exc:`OSError`.
542
543.. exception:: EnvironmentError
544
545.. exception:: IOError
546
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200547.. exception:: WindowsError
548
549 Only available on Windows.
550
551
552OS exceptions
553^^^^^^^^^^^^^
554
555The following exceptions are subclasses of :exc:`OSError`, they get raised
556depending on the system error code.
557
558.. exception:: BlockingIOError
559
560 Raised when an operation would block on an object (e.g. socket) set
561 for non-blocking operation.
562 Corresponds to :c:data:`errno` ``EAGAIN``, ``EALREADY``,
563 ``EWOULDBLOCK`` and ``EINPROGRESS``.
564
Antoine Pitrouf55011f2011-10-12 18:57:23 +0200565 In addition to those of :exc:`OSError`, :exc:`BlockingIOError` can have
566 one more attribute:
567
568 .. attribute:: characters_written
569
570 An integer containing the number of characters written to the stream
571 before it blocked. This attribute is available when using the
572 buffered I/O classes from the :mod:`io` module.
573
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200574.. exception:: ChildProcessError
575
576 Raised when an operation on a child process failed.
577 Corresponds to :c:data:`errno` ``ECHILD``.
578
579.. exception:: ConnectionError
580
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300581 A base class for connection-related issues.
582
583 Subclasses are :exc:`BrokenPipeError`, :exc:`ConnectionAbortedError`,
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200584 :exc:`ConnectionRefusedError` and :exc:`ConnectionResetError`.
585
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300586.. exception:: BrokenPipeError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200587
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300588 A subclass of :exc:`ConnectionError`, raised when trying to write on a
589 pipe while the other end has been closed, or trying to write on a socket
590 which has been shutdown for writing.
591 Corresponds to :c:data:`errno` ``EPIPE`` and ``ESHUTDOWN``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200592
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300593.. exception:: ConnectionAbortedError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200594
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300595 A subclass of :exc:`ConnectionError`, raised when a connection attempt
596 is aborted by the peer.
597 Corresponds to :c:data:`errno` ``ECONNABORTED``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200598
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300599.. exception:: ConnectionRefusedError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200600
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300601 A subclass of :exc:`ConnectionError`, raised when a connection attempt
602 is refused by the peer.
603 Corresponds to :c:data:`errno` ``ECONNREFUSED``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200604
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300605.. exception:: ConnectionResetError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200606
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300607 A subclass of :exc:`ConnectionError`, raised when a connection is
608 reset by the peer.
609 Corresponds to :c:data:`errno` ``ECONNRESET``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200610
611.. exception:: FileExistsError
612
613 Raised when trying to create a file or directory which already exists.
614 Corresponds to :c:data:`errno` ``EEXIST``.
615
616.. exception:: FileNotFoundError
617
618 Raised when a file or directory is requested but doesn't exist.
619 Corresponds to :c:data:`errno` ``ENOENT``.
620
621.. exception:: InterruptedError
622
623 Raised when a system call is interrupted by an incoming signal.
Victor Stinnerf70e1ca2015-03-30 21:16:11 +0200624 Corresponds to :c:data:`errno` :py:data:`~errno.EINTR`.
625
626 .. versionchanged:: 3.5
627 Python now retries system calls when a syscall is interrupted by a
628 signal, except if the signal handler raises an exception (see :pep:`475`
629 for the rationale), instead of raising :exc:`InterruptedError`.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200630
631.. exception:: IsADirectoryError
632
633 Raised when a file operation (such as :func:`os.remove`) is requested
634 on a directory.
635 Corresponds to :c:data:`errno` ``EISDIR``.
636
637.. exception:: NotADirectoryError
638
639 Raised when a directory operation (such as :func:`os.listdir`) is requested
640 on something which is not a directory.
641 Corresponds to :c:data:`errno` ``ENOTDIR``.
642
643.. exception:: PermissionError
644
645 Raised when trying to run an operation without the adequate access
646 rights - for example filesystem permissions.
647 Corresponds to :c:data:`errno` ``EACCES`` and ``EPERM``.
648
649.. exception:: ProcessLookupError
650
651 Raised when a given process doesn't exist.
652 Corresponds to :c:data:`errno` ``ESRCH``.
653
654.. exception:: TimeoutError
655
656 Raised when a system function timed out at the system level.
657 Corresponds to :c:data:`errno` ``ETIMEDOUT``.
658
659.. versionadded:: 3.3
660 All the above :exc:`OSError` subclasses were added.
661
662
663.. seealso::
664
665 :pep:`3151` - Reworking the OS and IO exception hierarchy
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200666
667
Nick Coghlan9b997472018-01-08 12:45:02 +1000668.. _warning-categories-as-exceptions:
669
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200670Warnings
671--------
672
Nick Coghlan9b997472018-01-08 12:45:02 +1000673The following exceptions are used as warning categories; see the
674:ref:`warning-categories` documentation for more details.
Georg Brandl116aa622007-08-15 14:28:22 +0000675
Georg Brandl116aa622007-08-15 14:28:22 +0000676.. exception:: Warning
677
678 Base class for warning categories.
679
680
681.. exception:: UserWarning
682
683 Base class for warnings generated by user code.
684
685
686.. exception:: DeprecationWarning
687
Nick Coghlan9b997472018-01-08 12:45:02 +1000688 Base class for warnings about deprecated features when those warnings are
689 intended for other Python developers.
Georg Brandl116aa622007-08-15 14:28:22 +0000690
691
692.. exception:: PendingDeprecationWarning
693
Nick Coghlan9b997472018-01-08 12:45:02 +1000694 Base class for warnings about features which will be deprecated in the
695 future.
Georg Brandl116aa622007-08-15 14:28:22 +0000696
697
698.. exception:: SyntaxWarning
699
Martin Panterd21e0b52015-10-10 10:36:22 +0000700 Base class for warnings about dubious syntax.
Georg Brandl116aa622007-08-15 14:28:22 +0000701
702
703.. exception:: RuntimeWarning
704
705 Base class for warnings about dubious runtime behavior.
706
707
708.. exception:: FutureWarning
709
Nick Coghlan9b997472018-01-08 12:45:02 +1000710 Base class for warnings about deprecated features when those warnings are
711 intended for end users of applications that are written in Python.
Georg Brandl116aa622007-08-15 14:28:22 +0000712
713
714.. exception:: ImportWarning
715
716 Base class for warnings about probable mistakes in module imports.
717
Georg Brandl116aa622007-08-15 14:28:22 +0000718
719.. exception:: UnicodeWarning
720
721 Base class for warnings related to Unicode.
722
Georg Brandl08be72d2010-10-24 15:11:22 +0000723
Guido van Rossum98297ee2007-11-06 21:34:58 +0000724.. exception:: BytesWarning
Georg Brandl116aa622007-08-15 14:28:22 +0000725
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300726 Base class for warnings related to :class:`bytes` and :class:`bytearray`.
Guido van Rossum98297ee2007-11-06 21:34:58 +0000727
Georg Brandl08be72d2010-10-24 15:11:22 +0000728
729.. exception:: ResourceWarning
730
Nick Coghlan9b997472018-01-08 12:45:02 +1000731 Base class for warnings related to resource usage. Ignored by the default
732 warning filters.
Georg Brandl08be72d2010-10-24 15:11:22 +0000733
734 .. versionadded:: 3.2
735
736
737
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +0000738Exception hierarchy
739-------------------
Guido van Rossum98297ee2007-11-06 21:34:58 +0000740
741The class hierarchy for built-in exceptions is:
Georg Brandl116aa622007-08-15 14:28:22 +0000742
743.. literalinclude:: ../../Lib/test/exception_hierarchy.txt