blob: ef39e6c6f0a5543f128b1e9b8a7512dee59c4201 [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
Benjamin Peterson222ef822014-04-07 19:34:33 -0400165 Raised when a :term:`generator`\'s :meth:`close` method is called. It
Christian Heimescbf3b5c2007-12-03 21:02:03 +0000166 directly inherits from :exc:`BaseException` instead of :exc:`Exception` since
167 it is technically not an error.
Georg Brandl116aa622007-08-15 14:28:22 +0000168
Georg Brandl116aa622007-08-15 14:28:22 +0000169
Georg Brandl116aa622007-08-15 14:28:22 +0000170.. exception:: ImportError
171
Brett Cannon679ecb52013-07-04 17:51:50 -0400172 Raised when an :keyword:`import` statement fails to find the module definition
173 or when a ``from ... import`` fails to find a name that is to be imported.
Georg Brandl116aa622007-08-15 14:28:22 +0000174
Brett Cannon79ec55e2012-04-12 20:24:54 -0400175 The :attr:`name` and :attr:`path` attributes can be set using keyword-only
176 arguments to the constructor. When set they represent the name of the module
177 that was attempted to be imported and the path to any file which triggered
178 the exception, respectively.
179
180 .. versionchanged:: 3.3
181 Added the :attr:`name` and :attr:`path` attributes.
182
Georg Brandl116aa622007-08-15 14:28:22 +0000183
184.. exception:: IndexError
185
Georg Brandl95817b32008-05-11 14:30:18 +0000186 Raised when a sequence subscript is out of range. (Slice indices are
187 silently truncated to fall in the allowed range; if an index is not an
188 integer, :exc:`TypeError` is raised.)
Georg Brandl116aa622007-08-15 14:28:22 +0000189
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000190 .. XXX xref to sequences
Georg Brandl116aa622007-08-15 14:28:22 +0000191
192
193.. exception:: KeyError
194
195 Raised when a mapping (dictionary) key is not found in the set of existing keys.
196
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000197 .. XXX xref to mapping objects?
Georg Brandl116aa622007-08-15 14:28:22 +0000198
199
200.. exception:: KeyboardInterrupt
201
202 Raised when the user hits the interrupt key (normally :kbd:`Control-C` or
Georg Brandl81ac1ce2007-08-31 17:17:17 +0000203 :kbd:`Delete`). During execution, a check for interrupts is made
204 regularly. The exception inherits from :exc:`BaseException` so as to not be
205 accidentally caught by code that catches :exc:`Exception` and thus prevent
206 the interpreter from exiting.
Georg Brandl116aa622007-08-15 14:28:22 +0000207
Georg Brandl116aa622007-08-15 14:28:22 +0000208
209.. exception:: MemoryError
210
211 Raised when an operation runs out of memory but the situation may still be
212 rescued (by deleting some objects). The associated value is a string indicating
213 what kind of (internal) operation ran out of memory. Note that because of the
Georg Brandl60203b42010-10-06 10:11:56 +0000214 underlying memory management architecture (C's :c:func:`malloc` function), the
Georg Brandl116aa622007-08-15 14:28:22 +0000215 interpreter may not always be able to completely recover from this situation; it
216 nevertheless raises an exception so that a stack traceback can be printed, in
217 case a run-away program was the cause.
218
219
220.. exception:: NameError
221
222 Raised when a local or global name is not found. This applies only to
223 unqualified names. The associated value is an error message that includes the
224 name that could not be found.
225
226
227.. exception:: NotImplementedError
228
229 This exception is derived from :exc:`RuntimeError`. In user defined base
230 classes, abstract methods should raise this exception when they require derived
231 classes to override the method.
232
Georg Brandl116aa622007-08-15 14:28:22 +0000233
Martin Panter5487c132015-10-26 11:05:42 +0000234.. exception:: OSError([arg])
235 OSError(errno, strerror[, filename[, winerror[, filename2]]])
Georg Brandl116aa622007-08-15 14:28:22 +0000236
Christian Heimesa62da1d2008-01-12 19:39:10 +0000237 .. index:: module: errno
238
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200239 This exception is raised when a system function returns a system-related
240 error, including I/O failures such as "file not found" or "disk full"
Martin Panter5487c132015-10-26 11:05:42 +0000241 (not for illegal argument types or other incidental errors).
Christian Heimesa62da1d2008-01-12 19:39:10 +0000242
Martin Panter5487c132015-10-26 11:05:42 +0000243 The second form of the constructor sets the corresponding attributes,
244 described below. The attributes default to :const:`None` if not
245 specified. For backwards compatibility, if three arguments are passed,
246 the :attr:`~BaseException.args` attribute contains only a 2-tuple
247 of the first two constructor arguments.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200248
Martin Panter5487c132015-10-26 11:05:42 +0000249 The constructor often actually returns a subclass of :exc:`OSError`, as
250 described in `OS exceptions`_ below. The particular subclass depends on
251 the final :attr:`.errno` value. This behaviour only occurs when
252 constructing :exc:`OSError` directly or via an alias, and is not
253 inherited when subclassing.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200254
Martin Panter5487c132015-10-26 11:05:42 +0000255 .. attribute:: errno
256
257 A numeric error code from the C variable :c:data:`errno`.
258
259 .. attribute:: winerror
260
261 Under Windows, this gives you the native
262 Windows error code. The :attr:`.errno` attribute is then an approximate
263 translation, in POSIX terms, of that native error code.
264
265 Under Windows, if the *winerror* constructor argument is an integer,
266 the :attr:`.errno` attribute is determined from the Windows error code,
267 and the *errno* argument is ignored. On other platforms, the
268 *winerror* argument is ignored, and the :attr:`winerror` attribute
269 does not exist.
270
271 .. attribute:: strerror
272
273 The corresponding error message, as provided by
274 the operating system. It is formatted by the C
275 functions :c:func:`perror` under POSIX, and :c:func:`FormatMessage`
276 under Windows.
277
278 .. attribute:: filename
279 filename2
280
281 For exceptions that involve a file system path (such as :func:`open` or
282 :func:`os.unlink`), :attr:`filename` is the file name passed to the function.
283 For functions that involve two file system paths (such as
284 :func:`os.rename`), :attr:`filename2` corresponds to the second
285 file name passed to the function.
Larry Hastingsb0827312014-02-09 22:05:19 -0800286
Georg Brandl116aa622007-08-15 14:28:22 +0000287
Antoine Pitrou195e7022011-10-12 16:46:46 +0200288 .. versionchanged:: 3.3
289 :exc:`EnvironmentError`, :exc:`IOError`, :exc:`WindowsError`,
290 :exc:`VMSError`, :exc:`socket.error`, :exc:`select.error` and
Martin Panter5487c132015-10-26 11:05:42 +0000291 :exc:`mmap.error` have been merged into :exc:`OSError`, and the
292 constructor may return a subclass.
Antoine Pitrou195e7022011-10-12 16:46:46 +0200293
Victor Stinner292c8352012-10-30 02:17:38 +0100294 .. versionchanged:: 3.4
Victor Stinner292c8352012-10-30 02:17:38 +0100295 The :attr:`filename` attribute is now the original file name passed to
296 the function, instead of the name encoded to or decoded from the
Martin Panter5487c132015-10-26 11:05:42 +0000297 filesystem encoding. Also, the *filename2* constructor argument and
298 attribute was added.
Victor Stinner292c8352012-10-30 02:17:38 +0100299
Georg Brandl116aa622007-08-15 14:28:22 +0000300
301.. exception:: OverflowError
302
303 Raised when the result of an arithmetic operation is too large to be
Georg Brandlba956ae2007-11-29 17:24:34 +0000304 represented. This cannot occur for integers (which would rather raise
Terry Jan Reedyb6d1f482014-06-16 03:31:00 -0400305 :exc:`MemoryError` than give up). However, for historical reasons,
306 OverflowError is sometimes raised for integers that are outside a required
307 range. Because of the lack of standardization of floating point exception
308 handling in C, most floating point operations are not checked.
Georg Brandl116aa622007-08-15 14:28:22 +0000309
310
311.. exception:: ReferenceError
312
313 This exception is raised when a weak reference proxy, created by the
314 :func:`weakref.proxy` function, is used to access an attribute of the referent
315 after it has been garbage collected. For more information on weak references,
316 see the :mod:`weakref` module.
317
Georg Brandl116aa622007-08-15 14:28:22 +0000318
319.. exception:: RuntimeError
320
321 Raised when an error is detected that doesn't fall in any of the other
322 categories. The associated value is a string indicating what precisely went
Antoine Pitrou9527f162013-11-25 19:08:32 +0100323 wrong.
Georg Brandl116aa622007-08-15 14:28:22 +0000324
325
326.. exception:: StopIteration
327
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000328 Raised by built-in function :func:`next` and an :term:`iterator`\'s
Ezio Melotti1dd7c302012-10-12 13:45:38 +0300329 :meth:`~iterator.__next__` method to signal that there are no further
330 items produced by the iterator.
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000331
332 The exception object has a single attribute :attr:`value`, which is
333 given as an argument when constructing the exception, and defaults
334 to :const:`None`.
335
336 When a generator function returns, a new :exc:`StopIteration` instance is
337 raised, and the value returned by the function is used as the
338 :attr:`value` parameter to the constructor of the exception.
Georg Brandl116aa622007-08-15 14:28:22 +0000339
Nick Coghlan0ed80192012-01-14 14:43:24 +1000340 .. versionchanged:: 3.3
341 Added ``value`` attribute and the ability for generator functions to
342 use it to return a value.
Georg Brandl116aa622007-08-15 14:28:22 +0000343
344.. exception:: SyntaxError
345
346 Raised when the parser encounters a syntax error. This may occur in an
347 :keyword:`import` statement, in a call to the built-in functions :func:`exec`
348 or :func:`eval`, or when reading the initial script or standard input
349 (also interactively).
350
Georg Brandl116aa622007-08-15 14:28:22 +0000351 Instances of this class have attributes :attr:`filename`, :attr:`lineno`,
352 :attr:`offset` and :attr:`text` for easier access to the details. :func:`str`
353 of the exception instance returns only the message.
354
355
Georg Brandl0bdfbfa2010-12-18 17:51:28 +0000356.. exception:: IndentationError
357
358 Base class for syntax errors related to incorrect indentation. This is a
359 subclass of :exc:`SyntaxError`.
360
361
362.. exception:: TabError
363
364 Raised when indentation contains an inconsistent use of tabs and spaces.
365 This is a subclass of :exc:`IndentationError`.
366
367
Georg Brandl116aa622007-08-15 14:28:22 +0000368.. exception:: SystemError
369
370 Raised when the interpreter finds an internal error, but the situation does not
371 look so serious to cause it to abandon all hope. The associated value is a
372 string indicating what went wrong (in low-level terms).
373
374 You should report this to the author or maintainer of your Python interpreter.
375 Be sure to report the version of the Python interpreter (``sys.version``; it is
376 also printed at the start of an interactive Python session), the exact error
377 message (the exception's associated value) and if possible the source of the
378 program that triggered the error.
379
380
381.. exception:: SystemExit
382
Berker Peksag77a6b202015-03-10 14:47:15 +0200383 This exception is raised by the :func:`sys.exit` function. It inherits from
384 :exc:`BaseException` instead of :exc:`Exception` so that it is not accidentally
385 caught by code that catches :exc:`Exception`. This allows the exception to
386 properly propagate up and cause the interpreter to exit. When it is not
387 handled, the Python interpreter exits; no stack traceback is printed. The
388 constructor accepts the same optional argument passed to :func:`sys.exit`.
389 If the value is an integer, it specifies the system exit status (passed to
390 C's :c:func:`exit` function); if it is ``None``, the exit status is zero; if
391 it has another type (such as a string), the object's value is printed and
Georg Brandl95817b32008-05-11 14:30:18 +0000392 the exit status is one.
Georg Brandl116aa622007-08-15 14:28:22 +0000393
Georg Brandl116aa622007-08-15 14:28:22 +0000394 A call to :func:`sys.exit` is translated into an exception so that clean-up
395 handlers (:keyword:`finally` clauses of :keyword:`try` statements) can be
396 executed, and so that a debugger can execute a script without running the risk
397 of losing control. The :func:`os._exit` function can be used if it is
398 absolutely positively necessary to exit immediately (for example, in the child
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300399 process after a call to :func:`os.fork`).
Georg Brandl116aa622007-08-15 14:28:22 +0000400
Berker Peksag77a6b202015-03-10 14:47:15 +0200401 .. attribute:: code
402
403 The exit status or error message that is passed to the constructor.
404 (Defaults to ``None``.)
Georg Brandl116aa622007-08-15 14:28:22 +0000405
Georg Brandl116aa622007-08-15 14:28:22 +0000406
407.. exception:: TypeError
408
409 Raised when an operation or function is applied to an object of inappropriate
410 type. The associated value is a string giving details about the type mismatch.
411
412
413.. exception:: UnboundLocalError
414
415 Raised when a reference is made to a local variable in a function or method, but
416 no value has been bound to that variable. This is a subclass of
417 :exc:`NameError`.
418
Georg Brandl116aa622007-08-15 14:28:22 +0000419
420.. exception:: UnicodeError
421
422 Raised when a Unicode-related encoding or decoding error occurs. It is a
423 subclass of :exc:`ValueError`.
424
Benjamin Peterson78f7e3a2012-12-02 11:33:06 -0500425 :exc:`UnicodeError` has attributes that describe the encoding or decoding
426 error. For example, ``err.object[err.start:err.end]`` gives the particular
427 invalid input that the codec failed on.
428
429 .. attribute:: encoding
430
431 The name of the encoding that raised the error.
432
433 .. attribute:: reason
434
435 A string describing the specific codec error.
436
437 .. attribute:: object
438
439 The object the codec was attempting to encode or decode.
440
441 .. attribute:: start
442
443 The first index of invalid data in :attr:`object`.
444
445 .. attribute:: end
446
447 The index after the last invalid data in :attr:`object`.
448
Georg Brandl116aa622007-08-15 14:28:22 +0000449
450.. exception:: UnicodeEncodeError
451
452 Raised when a Unicode-related error occurs during encoding. It is a subclass of
453 :exc:`UnicodeError`.
454
Georg Brandl116aa622007-08-15 14:28:22 +0000455
456.. exception:: UnicodeDecodeError
457
458 Raised when a Unicode-related error occurs during decoding. It is a subclass of
459 :exc:`UnicodeError`.
460
Georg Brandl116aa622007-08-15 14:28:22 +0000461
462.. exception:: UnicodeTranslateError
463
464 Raised when a Unicode-related error occurs during translating. It is a subclass
465 of :exc:`UnicodeError`.
466
Georg Brandl116aa622007-08-15 14:28:22 +0000467
468.. exception:: ValueError
469
470 Raised when a built-in operation or function receives an argument that has the
471 right type but an inappropriate value, and the situation is not described by a
472 more precise exception such as :exc:`IndexError`.
473
474
Georg Brandl116aa622007-08-15 14:28:22 +0000475.. exception:: ZeroDivisionError
476
477 Raised when the second argument of a division or modulo operation is zero. The
478 associated value is a string indicating the type of the operands and the
479 operation.
480
Georg Brandlfbd1b222009-12-29 21:38:35 +0000481
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200482The following exceptions are kept for compatibility with previous versions;
483starting from Python 3.3, they are aliases of :exc:`OSError`.
484
485.. exception:: EnvironmentError
486
487.. exception:: IOError
488
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200489.. exception:: WindowsError
490
491 Only available on Windows.
492
493
494OS exceptions
495^^^^^^^^^^^^^
496
497The following exceptions are subclasses of :exc:`OSError`, they get raised
498depending on the system error code.
499
500.. exception:: BlockingIOError
501
502 Raised when an operation would block on an object (e.g. socket) set
503 for non-blocking operation.
504 Corresponds to :c:data:`errno` ``EAGAIN``, ``EALREADY``,
505 ``EWOULDBLOCK`` and ``EINPROGRESS``.
506
Antoine Pitrouf55011f2011-10-12 18:57:23 +0200507 In addition to those of :exc:`OSError`, :exc:`BlockingIOError` can have
508 one more attribute:
509
510 .. attribute:: characters_written
511
512 An integer containing the number of characters written to the stream
513 before it blocked. This attribute is available when using the
514 buffered I/O classes from the :mod:`io` module.
515
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200516.. exception:: ChildProcessError
517
518 Raised when an operation on a child process failed.
519 Corresponds to :c:data:`errno` ``ECHILD``.
520
521.. exception:: ConnectionError
522
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300523 A base class for connection-related issues.
524
525 Subclasses are :exc:`BrokenPipeError`, :exc:`ConnectionAbortedError`,
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200526 :exc:`ConnectionRefusedError` and :exc:`ConnectionResetError`.
527
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300528.. exception:: BrokenPipeError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200529
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300530 A subclass of :exc:`ConnectionError`, raised when trying to write on a
531 pipe while the other end has been closed, or trying to write on a socket
532 which has been shutdown for writing.
533 Corresponds to :c:data:`errno` ``EPIPE`` and ``ESHUTDOWN``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200534
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300535.. exception:: ConnectionAbortedError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200536
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300537 A subclass of :exc:`ConnectionError`, raised when a connection attempt
538 is aborted by the peer.
539 Corresponds to :c:data:`errno` ``ECONNABORTED``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200540
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300541.. exception:: ConnectionRefusedError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200542
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300543 A subclass of :exc:`ConnectionError`, raised when a connection attempt
544 is refused by the peer.
545 Corresponds to :c:data:`errno` ``ECONNREFUSED``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200546
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300547.. exception:: ConnectionResetError
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200548
Ezio Melottib24d3cf2012-10-21 03:22:05 +0300549 A subclass of :exc:`ConnectionError`, raised when a connection is
550 reset by the peer.
551 Corresponds to :c:data:`errno` ``ECONNRESET``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200552
553.. exception:: FileExistsError
554
555 Raised when trying to create a file or directory which already exists.
556 Corresponds to :c:data:`errno` ``EEXIST``.
557
558.. exception:: FileNotFoundError
559
560 Raised when a file or directory is requested but doesn't exist.
561 Corresponds to :c:data:`errno` ``ENOENT``.
562
563.. exception:: InterruptedError
564
565 Raised when a system call is interrupted by an incoming signal.
Andrew Svetlov73a5a122012-12-05 11:12:14 +0200566 Corresponds to :c:data:`errno` ``EINTR``.
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200567
568.. exception:: IsADirectoryError
569
570 Raised when a file operation (such as :func:`os.remove`) is requested
571 on a directory.
572 Corresponds to :c:data:`errno` ``EISDIR``.
573
574.. exception:: NotADirectoryError
575
576 Raised when a directory operation (such as :func:`os.listdir`) is requested
577 on something which is not a directory.
578 Corresponds to :c:data:`errno` ``ENOTDIR``.
579
580.. exception:: PermissionError
581
582 Raised when trying to run an operation without the adequate access
583 rights - for example filesystem permissions.
584 Corresponds to :c:data:`errno` ``EACCES`` and ``EPERM``.
585
586.. exception:: ProcessLookupError
587
588 Raised when a given process doesn't exist.
589 Corresponds to :c:data:`errno` ``ESRCH``.
590
591.. exception:: TimeoutError
592
593 Raised when a system function timed out at the system level.
594 Corresponds to :c:data:`errno` ``ETIMEDOUT``.
595
596.. versionadded:: 3.3
597 All the above :exc:`OSError` subclasses were added.
598
599
600.. seealso::
601
602 :pep:`3151` - Reworking the OS and IO exception hierarchy
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200603
604
605Warnings
606--------
607
Georg Brandl116aa622007-08-15 14:28:22 +0000608The following exceptions are used as warning categories; see the :mod:`warnings`
609module for more information.
610
Georg Brandl116aa622007-08-15 14:28:22 +0000611.. exception:: Warning
612
613 Base class for warning categories.
614
615
616.. exception:: UserWarning
617
618 Base class for warnings generated by user code.
619
620
621.. exception:: DeprecationWarning
622
623 Base class for warnings about deprecated features.
624
625
626.. exception:: PendingDeprecationWarning
627
628 Base class for warnings about features which will be deprecated in the future.
629
630
631.. exception:: SyntaxWarning
632
Martin Panterd21e0b52015-10-10 10:36:22 +0000633 Base class for warnings about dubious syntax.
Georg Brandl116aa622007-08-15 14:28:22 +0000634
635
636.. exception:: RuntimeWarning
637
638 Base class for warnings about dubious runtime behavior.
639
640
641.. exception:: FutureWarning
642
643 Base class for warnings about constructs that will change semantically in the
644 future.
645
646
647.. exception:: ImportWarning
648
649 Base class for warnings about probable mistakes in module imports.
650
Georg Brandl116aa622007-08-15 14:28:22 +0000651
652.. exception:: UnicodeWarning
653
654 Base class for warnings related to Unicode.
655
Georg Brandl08be72d2010-10-24 15:11:22 +0000656
Guido van Rossum98297ee2007-11-06 21:34:58 +0000657.. exception:: BytesWarning
Georg Brandl116aa622007-08-15 14:28:22 +0000658
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300659 Base class for warnings related to :class:`bytes` and :class:`bytearray`.
Guido van Rossum98297ee2007-11-06 21:34:58 +0000660
Georg Brandl08be72d2010-10-24 15:11:22 +0000661
662.. exception:: ResourceWarning
663
664 Base class for warnings related to resource usage.
665
666 .. versionadded:: 3.2
667
668
669
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +0000670Exception hierarchy
671-------------------
Guido van Rossum98297ee2007-11-06 21:34:58 +0000672
673The class hierarchy for built-in exceptions is:
Georg Brandl116aa622007-08-15 14:28:22 +0000674
675.. literalinclude:: ../../Lib/test/exception_hierarchy.txt