blob: a6b20a5ac95b1bb1ef84a0df15a51d0fd120b966 [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
157 Raised when a floating point operation fails. This exception is always defined,
158 but can only be raised when Python is configured with the
Éric Araujo713d3032010-11-18 16:38:46 +0000159 ``--with-fpectl`` option, or the :const:`WANT_SIGFPE_HANDLER` symbol is
Georg Brandl116aa622007-08-15 14:28:22 +0000160 defined in the :file:`pyconfig.h` file.
161
162
163.. exception:: GeneratorExit
164
Yury Selivanov66f88282015-06-24 11:04:15 -0400165 Raised when a :term:`generator` or :term:`coroutine` is closed;
166 see :meth:`generator.close` and :meth:`coroutine.close`. It
Christian Heimescbf3b5c2007-12-03 21:02:03 +0000167 directly inherits from :exc:`BaseException` instead of :exc:`Exception` since
168 it is technically not an error.
Georg Brandl116aa622007-08-15 14:28:22 +0000169
Georg Brandl116aa622007-08-15 14:28:22 +0000170
Georg Brandl116aa622007-08-15 14:28:22 +0000171.. exception:: ImportError
172
Eric Snowc9432652016-09-07 15:42:32 -0700173 Raised when the :keyword:`import` statement has troubles trying to
174 load a module. Also raised when the "from list" in ``from ... import``
175 has a name that cannot be found.
Georg Brandl116aa622007-08-15 14:28:22 +0000176
Brett Cannon79ec55e2012-04-12 20:24:54 -0400177 The :attr:`name` and :attr:`path` attributes can be set using keyword-only
178 arguments to the constructor. When set they represent the name of the module
179 that was attempted to be imported and the path to any file which triggered
180 the exception, respectively.
181
182 .. versionchanged:: 3.3
183 Added the :attr:`name` and :attr:`path` attributes.
184
Eric Snowc9432652016-09-07 15:42:32 -0700185.. exception:: ModuleNotFoundError
186
187 A subclass of :exc:`ImportError` which is raised by :keyword:`import`
188 when a module could not be located. It is also raised when ``None``
189 is found in :data:`sys.modules`.
190
191 .. versionadded:: 3.6
192
Georg Brandl116aa622007-08-15 14:28:22 +0000193
194.. exception:: IndexError
195
Georg Brandl95817b32008-05-11 14:30:18 +0000196 Raised when a sequence subscript is out of range. (Slice indices are
197 silently truncated to fall in the allowed range; if an index is not an
198 integer, :exc:`TypeError` is raised.)
Georg Brandl116aa622007-08-15 14:28:22 +0000199
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000200 .. XXX xref to sequences
Georg Brandl116aa622007-08-15 14:28:22 +0000201
202
203.. exception:: KeyError
204
205 Raised when a mapping (dictionary) key is not found in the set of existing keys.
206
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000207 .. XXX xref to mapping objects?
Georg Brandl116aa622007-08-15 14:28:22 +0000208
209
210.. exception:: KeyboardInterrupt
211
212 Raised when the user hits the interrupt key (normally :kbd:`Control-C` or
Georg Brandl81ac1ce2007-08-31 17:17:17 +0000213 :kbd:`Delete`). During execution, a check for interrupts is made
214 regularly. The exception inherits from :exc:`BaseException` so as to not be
215 accidentally caught by code that catches :exc:`Exception` and thus prevent
216 the interpreter from exiting.
Georg Brandl116aa622007-08-15 14:28:22 +0000217
Georg Brandl116aa622007-08-15 14:28:22 +0000218
219.. exception:: MemoryError
220
221 Raised when an operation runs out of memory but the situation may still be
222 rescued (by deleting some objects). The associated value is a string indicating
223 what kind of (internal) operation ran out of memory. Note that because of the
Georg Brandl60203b42010-10-06 10:11:56 +0000224 underlying memory management architecture (C's :c:func:`malloc` function), the
Georg Brandl116aa622007-08-15 14:28:22 +0000225 interpreter may not always be able to completely recover from this situation; it
226 nevertheless raises an exception so that a stack traceback can be printed, in
227 case a run-away program was the cause.
228
229
230.. exception:: NameError
231
232 Raised when a local or global name is not found. This applies only to
233 unqualified names. The associated value is an error message that includes the
234 name that could not be found.
235
236
237.. exception:: NotImplementedError
238
239 This exception is derived from :exc:`RuntimeError`. In user defined base
Ethan Furman20bd9f02016-08-05 15:10:16 -0700240 classes, abstract methods should raise this exception when they require
241 derived classes to override the method, or while the class is being
242 developed to indicate that the real implementation still needs to be added.
Georg Brandl116aa622007-08-15 14:28:22 +0000243
Ethan Furman20bd9f02016-08-05 15:10:16 -0700244 .. note::
245
delirious-lettuce3378b202017-05-19 14:37:57 -0600246 It should not be used to indicate that an operator or method is not
Ethan Furman20bd9f02016-08-05 15:10:16 -0700247 meant to be supported at all -- in that case either leave the operator /
248 method undefined or, if a subclass, set it to :data:`None`.
249
250 .. note::
251
252 ``NotImplementedError`` and ``NotImplemented`` are not interchangeable,
253 even though they have similar names and purposes. See
254 :data:`NotImplemented` for details on when to use it.
Georg Brandl116aa622007-08-15 14:28:22 +0000255
Martin Panter5487c132015-10-26 11:05:42 +0000256.. exception:: OSError([arg])
257 OSError(errno, strerror[, filename[, winerror[, filename2]]])
Georg Brandl116aa622007-08-15 14:28:22 +0000258
Christian Heimesa62da1d2008-01-12 19:39:10 +0000259 .. index:: module: errno
260
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200261 This exception is raised when a system function returns a system-related
262 error, including I/O failures such as "file not found" or "disk full"
Martin Panter5487c132015-10-26 11:05:42 +0000263 (not for illegal argument types or other incidental errors).
Christian Heimesa62da1d2008-01-12 19:39:10 +0000264
Martin Panter5487c132015-10-26 11:05:42 +0000265 The second form of the constructor sets the corresponding attributes,
266 described below. The attributes default to :const:`None` if not
267 specified. For backwards compatibility, if three arguments are passed,
268 the :attr:`~BaseException.args` attribute contains only a 2-tuple
269 of the first two constructor arguments.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200270
Martin Panter5487c132015-10-26 11:05:42 +0000271 The constructor often actually returns a subclass of :exc:`OSError`, as
272 described in `OS exceptions`_ below. The particular subclass depends on
273 the final :attr:`.errno` value. This behaviour only occurs when
274 constructing :exc:`OSError` directly or via an alias, and is not
275 inherited when subclassing.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200276
Martin Panter5487c132015-10-26 11:05:42 +0000277 .. attribute:: errno
278
279 A numeric error code from the C variable :c:data:`errno`.
280
281 .. attribute:: winerror
282
283 Under Windows, this gives you the native
284 Windows error code. The :attr:`.errno` attribute is then an approximate
285 translation, in POSIX terms, of that native error code.
286
287 Under Windows, if the *winerror* constructor argument is an integer,
288 the :attr:`.errno` attribute is determined from the Windows error code,
289 and the *errno* argument is ignored. On other platforms, the
290 *winerror* argument is ignored, and the :attr:`winerror` attribute
291 does not exist.
292
293 .. attribute:: strerror
294
295 The corresponding error message, as provided by
296 the operating system. It is formatted by the C
297 functions :c:func:`perror` under POSIX, and :c:func:`FormatMessage`
298 under Windows.
299
300 .. attribute:: filename
301 filename2
302
303 For exceptions that involve a file system path (such as :func:`open` or
304 :func:`os.unlink`), :attr:`filename` is the file name passed to the function.
305 For functions that involve two file system paths (such as
306 :func:`os.rename`), :attr:`filename2` corresponds to the second
307 file name passed to the function.
Larry Hastingsb0827312014-02-09 22:05:19 -0800308
Georg Brandl116aa622007-08-15 14:28:22 +0000309
Antoine Pitrou195e7022011-10-12 16:46:46 +0200310 .. versionchanged:: 3.3
311 :exc:`EnvironmentError`, :exc:`IOError`, :exc:`WindowsError`,
Berker Peksag8fafc742016-04-11 12:23:04 +0300312 :exc:`socket.error`, :exc:`select.error` and
Martin Panter5487c132015-10-26 11:05:42 +0000313 :exc:`mmap.error` have been merged into :exc:`OSError`, and the
314 constructor may return a subclass.
Antoine Pitrou195e7022011-10-12 16:46:46 +0200315
Victor Stinner292c8352012-10-30 02:17:38 +0100316 .. versionchanged:: 3.4
Victor Stinner292c8352012-10-30 02:17:38 +0100317 The :attr:`filename` attribute is now the original file name passed to
318 the function, instead of the name encoded to or decoded from the
Martin Panter5487c132015-10-26 11:05:42 +0000319 filesystem encoding. Also, the *filename2* constructor argument and
320 attribute was added.
Victor Stinner292c8352012-10-30 02:17:38 +0100321
Georg Brandl116aa622007-08-15 14:28:22 +0000322
323.. exception:: OverflowError
324
325 Raised when the result of an arithmetic operation is too large to be
Georg Brandlba956ae2007-11-29 17:24:34 +0000326 represented. This cannot occur for integers (which would rather raise
Terry Jan Reedyb6d1f482014-06-16 03:31:00 -0400327 :exc:`MemoryError` than give up). However, for historical reasons,
328 OverflowError is sometimes raised for integers that are outside a required
329 range. Because of the lack of standardization of floating point exception
330 handling in C, most floating point operations are not checked.
Georg Brandl116aa622007-08-15 14:28:22 +0000331
332
Yury Selivanovf488fb42015-07-03 01:04:23 -0400333.. exception:: RecursionError
334
335 This exception is derived from :exc:`RuntimeError`. It is raised when the
336 interpreter detects that the maximum recursion depth (see
337 :func:`sys.getrecursionlimit`) is exceeded.
338
339 .. versionadded:: 3.5
340 Previously, a plain :exc:`RuntimeError` was raised.
341
342
Georg Brandl116aa622007-08-15 14:28:22 +0000343.. exception:: ReferenceError
344
345 This exception is raised when a weak reference proxy, created by the
346 :func:`weakref.proxy` function, is used to access an attribute of the referent
347 after it has been garbage collected. For more information on weak references,
348 see the :mod:`weakref` module.
349
Georg Brandl116aa622007-08-15 14:28:22 +0000350
351.. exception:: RuntimeError
352
353 Raised when an error is detected that doesn't fall in any of the other
354 categories. The associated value is a string indicating what precisely went
Antoine Pitrou9527f162013-11-25 19:08:32 +0100355 wrong.
Georg Brandl116aa622007-08-15 14:28:22 +0000356
357
358.. exception:: StopIteration
359
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000360 Raised by built-in function :func:`next` and an :term:`iterator`\'s
Ezio Melotti1dd7c302012-10-12 13:45:38 +0300361 :meth:`~iterator.__next__` method to signal that there are no further
362 items produced by the iterator.
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000363
364 The exception object has a single attribute :attr:`value`, which is
365 given as an argument when constructing the exception, and defaults
366 to :const:`None`.
367
Yury Selivanov66f88282015-06-24 11:04:15 -0400368 When a :term:`generator` or :term:`coroutine` function
369 returns, a new :exc:`StopIteration` instance is
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000370 raised, and the value returned by the function is used as the
371 :attr:`value` parameter to the constructor of the exception.
Georg Brandl116aa622007-08-15 14:28:22 +0000372
Yury Selivanov8170e8c2015-05-09 11:44:30 -0400373 If a generator function defined in the presence of a ``from __future__
374 import generator_stop`` directive raises :exc:`StopIteration`, it will be
375 converted into a :exc:`RuntimeError` (retaining the :exc:`StopIteration`
376 as the new exception's cause).
377
Nick Coghlan0ed80192012-01-14 14:43:24 +1000378 .. versionchanged:: 3.3
379 Added ``value`` attribute and the ability for generator functions to
380 use it to return a value.
Georg Brandl116aa622007-08-15 14:28:22 +0000381
Yury Selivanov8170e8c2015-05-09 11:44:30 -0400382 .. versionchanged:: 3.5
383 Introduced the RuntimeError transformation.
384
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400385.. exception:: StopAsyncIteration
386
387 Must be raised by :meth:`__anext__` method of an
388 :term:`asynchronous iterator` object to stop the iteration.
389
390 .. versionadded:: 3.5
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400391
Georg Brandl116aa622007-08-15 14:28:22 +0000392.. exception:: SyntaxError
393
394 Raised when the parser encounters a syntax error. This may occur in an
395 :keyword:`import` statement, in a call to the built-in functions :func:`exec`
396 or :func:`eval`, or when reading the initial script or standard input
397 (also interactively).
398
Georg Brandl116aa622007-08-15 14:28:22 +0000399 Instances of this class have attributes :attr:`filename`, :attr:`lineno`,
400 :attr:`offset` and :attr:`text` for easier access to the details. :func:`str`
401 of the exception instance returns only the message.
402
403
Georg Brandl0bdfbfa2010-12-18 17:51:28 +0000404.. exception:: IndentationError
405
406 Base class for syntax errors related to incorrect indentation. This is a
407 subclass of :exc:`SyntaxError`.
408
409
410.. exception:: TabError
411
412 Raised when indentation contains an inconsistent use of tabs and spaces.
413 This is a subclass of :exc:`IndentationError`.
414
415
Georg Brandl116aa622007-08-15 14:28:22 +0000416.. exception:: SystemError
417
418 Raised when the interpreter finds an internal error, but the situation does not
419 look so serious to cause it to abandon all hope. The associated value is a
420 string indicating what went wrong (in low-level terms).
421
422 You should report this to the author or maintainer of your Python interpreter.
423 Be sure to report the version of the Python interpreter (``sys.version``; it is
424 also printed at the start of an interactive Python session), the exact error
425 message (the exception's associated value) and if possible the source of the
426 program that triggered the error.
427
428
429.. exception:: SystemExit
430
Berker Peksag77a6b202015-03-10 14:47:15 +0200431 This exception is raised by the :func:`sys.exit` function. It inherits from
432 :exc:`BaseException` instead of :exc:`Exception` so that it is not accidentally
433 caught by code that catches :exc:`Exception`. This allows the exception to
434 properly propagate up and cause the interpreter to exit. When it is not
435 handled, the Python interpreter exits; no stack traceback is printed. The
436 constructor accepts the same optional argument passed to :func:`sys.exit`.
437 If the value is an integer, it specifies the system exit status (passed to
438 C's :c:func:`exit` function); if it is ``None``, the exit status is zero; if
439 it has another type (such as a string), the object's value is printed and
Georg Brandl95817b32008-05-11 14:30:18 +0000440 the exit status is one.
Georg Brandl116aa622007-08-15 14:28:22 +0000441
Georg Brandl116aa622007-08-15 14:28:22 +0000442 A call to :func:`sys.exit` is translated into an exception so that clean-up
443 handlers (:keyword:`finally` clauses of :keyword:`try` statements) can be
444 executed, and so that a debugger can execute a script without running the risk
445 of losing control. The :func:`os._exit` function can be used if it is
446 absolutely positively necessary to exit immediately (for example, in the child
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300447 process after a call to :func:`os.fork`).
Georg Brandl116aa622007-08-15 14:28:22 +0000448
Berker Peksag77a6b202015-03-10 14:47:15 +0200449 .. attribute:: code
450
451 The exit status or error message that is passed to the constructor.
452 (Defaults to ``None``.)
Georg Brandl116aa622007-08-15 14:28:22 +0000453
Georg Brandl116aa622007-08-15 14:28:22 +0000454
455.. exception:: TypeError
456
457 Raised when an operation or function is applied to an object of inappropriate
458 type. The associated value is a string giving details about the type mismatch.
459
Ethan Furman20bd9f02016-08-05 15:10:16 -0700460 This exception may be raised by user code to indicate that an attempted
461 operation on an object is not supported, and is not meant to be. If an object
462 is meant to support a given operation but has not yet provided an
463 implementation, :exc:`NotImplementedError` is the proper exception to raise.
464
465 Passing arguments of the wrong type (e.g. passing a :class:`list` when an
466 :class:`int` is expected) should result in a :exc:`TypeError`, but passing
467 arguments with the wrong value (e.g. a number outside expected boundaries)
468 should result in a :exc:`ValueError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000469
470.. exception:: UnboundLocalError
471
472 Raised when a reference is made to a local variable in a function or method, but
473 no value has been bound to that variable. This is a subclass of
474 :exc:`NameError`.
475
Georg Brandl116aa622007-08-15 14:28:22 +0000476
477.. exception:: UnicodeError
478
479 Raised when a Unicode-related encoding or decoding error occurs. It is a
480 subclass of :exc:`ValueError`.
481
Benjamin Peterson78f7e3a2012-12-02 11:33:06 -0500482 :exc:`UnicodeError` has attributes that describe the encoding or decoding
483 error. For example, ``err.object[err.start:err.end]`` gives the particular
484 invalid input that the codec failed on.
485
486 .. attribute:: encoding
487
488 The name of the encoding that raised the error.
489
490 .. attribute:: reason
491
492 A string describing the specific codec error.
493
494 .. attribute:: object
495
496 The object the codec was attempting to encode or decode.
497
498 .. attribute:: start
499
500 The first index of invalid data in :attr:`object`.
501
502 .. attribute:: end
503
504 The index after the last invalid data in :attr:`object`.
505
Georg Brandl116aa622007-08-15 14:28:22 +0000506
507.. exception:: UnicodeEncodeError
508
509 Raised when a Unicode-related error occurs during encoding. It is a subclass of
510 :exc:`UnicodeError`.
511
Georg Brandl116aa622007-08-15 14:28:22 +0000512
513.. exception:: UnicodeDecodeError
514
515 Raised when a Unicode-related error occurs during decoding. It is a subclass of
516 :exc:`UnicodeError`.
517
Georg Brandl116aa622007-08-15 14:28:22 +0000518
519.. exception:: UnicodeTranslateError
520
521 Raised when a Unicode-related error occurs during translating. It is a subclass
522 of :exc:`UnicodeError`.
523
Georg Brandl116aa622007-08-15 14:28:22 +0000524
525.. exception:: ValueError
526
527 Raised when a built-in operation or function receives an argument that has the
528 right type but an inappropriate value, and the situation is not described by a
529 more precise exception such as :exc:`IndexError`.
530
531
Georg Brandl116aa622007-08-15 14:28:22 +0000532.. exception:: ZeroDivisionError
533
534 Raised when the second argument of a division or modulo operation is zero. The
535 associated value is a string indicating the type of the operands and the
536 operation.
537
Georg Brandlfbd1b222009-12-29 21:38:35 +0000538
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200539The following exceptions are kept for compatibility with previous versions;
540starting from Python 3.3, they are aliases of :exc:`OSError`.
541
542.. exception:: EnvironmentError
543
544.. exception:: IOError
545
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200546.. exception:: WindowsError
547
548 Only available on Windows.
549
550
551OS exceptions
552^^^^^^^^^^^^^
553
554The following exceptions are subclasses of :exc:`OSError`, they get raised
555depending on the system error code.
556
557.. exception:: BlockingIOError
558
559 Raised when an operation would block on an object (e.g. socket) set
560 for non-blocking operation.
561 Corresponds to :c:data:`errno` ``EAGAIN``, ``EALREADY``,
562 ``EWOULDBLOCK`` and ``EINPROGRESS``.
563
Antoine Pitrouf55011f2011-10-12 18:57:23 +0200564 In addition to those of :exc:`OSError`, :exc:`BlockingIOError` can have
565 one more attribute:
566
567 .. attribute:: characters_written
568
569 An integer containing the number of characters written to the stream
570 before it blocked. This attribute is available when using the
571 buffered I/O classes from the :mod:`io` module.
572
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200573.. exception:: ChildProcessError
574
575 Raised when an operation on a child process failed.
576 Corresponds to :c:data:`errno` ``ECHILD``.
577
578.. exception:: ConnectionError
579
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300580 A base class for connection-related issues.
581
582 Subclasses are :exc:`BrokenPipeError`, :exc:`ConnectionAbortedError`,
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200583 :exc:`ConnectionRefusedError` and :exc:`ConnectionResetError`.
584
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300585.. exception:: BrokenPipeError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200586
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300587 A subclass of :exc:`ConnectionError`, raised when trying to write on a
588 pipe while the other end has been closed, or trying to write on a socket
589 which has been shutdown for writing.
590 Corresponds to :c:data:`errno` ``EPIPE`` and ``ESHUTDOWN``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200591
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300592.. exception:: ConnectionAbortedError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200593
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300594 A subclass of :exc:`ConnectionError`, raised when a connection attempt
595 is aborted by the peer.
596 Corresponds to :c:data:`errno` ``ECONNABORTED``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200597
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300598.. exception:: ConnectionRefusedError
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 refused by the peer.
602 Corresponds to :c:data:`errno` ``ECONNREFUSED``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200603
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300604.. exception:: ConnectionResetError
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 is
607 reset by the peer.
608 Corresponds to :c:data:`errno` ``ECONNRESET``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200609
610.. exception:: FileExistsError
611
612 Raised when trying to create a file or directory which already exists.
613 Corresponds to :c:data:`errno` ``EEXIST``.
614
615.. exception:: FileNotFoundError
616
617 Raised when a file or directory is requested but doesn't exist.
618 Corresponds to :c:data:`errno` ``ENOENT``.
619
620.. exception:: InterruptedError
621
622 Raised when a system call is interrupted by an incoming signal.
Victor Stinnerf70e1ca2015-03-30 21:16:11 +0200623 Corresponds to :c:data:`errno` :py:data:`~errno.EINTR`.
624
625 .. versionchanged:: 3.5
626 Python now retries system calls when a syscall is interrupted by a
627 signal, except if the signal handler raises an exception (see :pep:`475`
628 for the rationale), instead of raising :exc:`InterruptedError`.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200629
630.. exception:: IsADirectoryError
631
632 Raised when a file operation (such as :func:`os.remove`) is requested
633 on a directory.
634 Corresponds to :c:data:`errno` ``EISDIR``.
635
636.. exception:: NotADirectoryError
637
638 Raised when a directory operation (such as :func:`os.listdir`) is requested
639 on something which is not a directory.
640 Corresponds to :c:data:`errno` ``ENOTDIR``.
641
642.. exception:: PermissionError
643
644 Raised when trying to run an operation without the adequate access
645 rights - for example filesystem permissions.
646 Corresponds to :c:data:`errno` ``EACCES`` and ``EPERM``.
647
648.. exception:: ProcessLookupError
649
650 Raised when a given process doesn't exist.
651 Corresponds to :c:data:`errno` ``ESRCH``.
652
653.. exception:: TimeoutError
654
655 Raised when a system function timed out at the system level.
656 Corresponds to :c:data:`errno` ``ETIMEDOUT``.
657
658.. versionadded:: 3.3
659 All the above :exc:`OSError` subclasses were added.
660
661
662.. seealso::
663
664 :pep:`3151` - Reworking the OS and IO exception hierarchy
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200665
666
667Warnings
668--------
669
Georg Brandl116aa622007-08-15 14:28:22 +0000670The following exceptions are used as warning categories; see the :mod:`warnings`
671module for more information.
672
Georg Brandl116aa622007-08-15 14:28:22 +0000673.. exception:: Warning
674
675 Base class for warning categories.
676
677
678.. exception:: UserWarning
679
680 Base class for warnings generated by user code.
681
682
683.. exception:: DeprecationWarning
684
685 Base class for warnings about deprecated features.
686
687
688.. exception:: PendingDeprecationWarning
689
690 Base class for warnings about features which will be deprecated in the future.
691
692
693.. exception:: SyntaxWarning
694
Martin Panterd21e0b52015-10-10 10:36:22 +0000695 Base class for warnings about dubious syntax.
Georg Brandl116aa622007-08-15 14:28:22 +0000696
697
698.. exception:: RuntimeWarning
699
700 Base class for warnings about dubious runtime behavior.
701
702
703.. exception:: FutureWarning
704
705 Base class for warnings about constructs that will change semantically in the
706 future.
707
708
709.. exception:: ImportWarning
710
711 Base class for warnings about probable mistakes in module imports.
712
Georg Brandl116aa622007-08-15 14:28:22 +0000713
714.. exception:: UnicodeWarning
715
716 Base class for warnings related to Unicode.
717
Georg Brandl08be72d2010-10-24 15:11:22 +0000718
Guido van Rossum98297ee2007-11-06 21:34:58 +0000719.. exception:: BytesWarning
Georg Brandl116aa622007-08-15 14:28:22 +0000720
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300721 Base class for warnings related to :class:`bytes` and :class:`bytearray`.
Guido van Rossum98297ee2007-11-06 21:34:58 +0000722
Georg Brandl08be72d2010-10-24 15:11:22 +0000723
724.. exception:: ResourceWarning
725
726 Base class for warnings related to resource usage.
727
728 .. versionadded:: 3.2
729
730
731
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +0000732Exception hierarchy
733-------------------
Guido van Rossum98297ee2007-11-06 21:34:58 +0000734
735The class hierarchy for built-in exceptions is:
Georg Brandl116aa622007-08-15 14:28:22 +0000736
737.. literalinclude:: ../../Lib/test/exception_hierarchy.txt