• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.. _bltin-exceptions:
2
3Built-in Exceptions
4===================
5
6.. index::
7   statement: try
8   statement: except
9
10In Python, all exceptions must be instances of a class that derives from
11:class:`BaseException`.  In a :keyword:`try` statement with an :keyword:`except`
12clause 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"
21indicating 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.
25
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
31The 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
35:ref:`tut-userexceptions`.
36
37When raising (or re-raising) an exception in an :keyword:`except` or
38:keyword:`finally` clause
39: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
43When 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.
58
59The 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__`
63is :const:`None` and :attr:`__suppress_context__` is false.
64
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.
68
69
70Base classes
71------------
72
73The following exceptions are used mostly as base classes for other exceptions.
74
75.. exception:: BaseException
76
77   The base class for all built-in exceptions.  It is not meant to be directly
78   inherited by user-defined classes (for that, use :exc:`Exception`).  If
79   :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.
82
83   .. attribute:: args
84
85      The tuple of arguments given to the exception constructor.  Some built-in
86      exceptions (like :exc:`OSError`) expect a certain number of arguments and
87      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)
101
102
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
108
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
116.. exception:: BufferError
117
118   Raised when a :ref:`buffer <bufferobjects>` related operation cannot be
119   performed.
120
121
122.. exception:: LookupError
123
124   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`.
127
128
129Concrete exceptions
130-------------------
131
132The following exceptions are the exceptions that are usually raised.
133
134.. exception:: AssertionError
135
136   .. index:: statement: assert
137
138   Raised when an :keyword:`assert` statement fails.
139
140
141.. exception:: AttributeError
142
143   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.)
146
147
148.. exception:: EOFError
149
150   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.)
153
154
155.. exception:: FloatingPointError
156
157   Not currently used.
158
159
160.. exception:: GeneratorExit
161
162   Raised when a :term:`generator` or :term:`coroutine` is closed;
163   see :meth:`generator.close` and :meth:`coroutine.close`.  It
164   directly inherits from :exc:`BaseException` instead of :exc:`Exception` since
165   it is technically not an error.
166
167
168.. exception:: ImportError
169
170   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.
173
174   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
182.. 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
190
191.. exception:: IndexError
192
193   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.)
196
197   .. XXX xref to sequences
198
199
200.. exception:: KeyError
201
202   Raised when a mapping (dictionary) key is not found in the set of existing keys.
203
204   .. XXX xref to mapping objects?
205
206
207.. exception:: KeyboardInterrupt
208
209   Raised when the user hits the interrupt key (normally :kbd:`Control-C` or
210   :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.
214
215
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
221   underlying memory management architecture (C's :c:func:`malloc` function), the
222   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
237   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.
240
241   .. note::
242
243      It should not be used to indicate that an operator or method is not
244      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.
252
253.. exception:: OSError([arg])
254               OSError(errno, strerror[, filename[, winerror[, filename2]]])
255
256   .. index:: module: errno
257
258   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"
260   (not for illegal argument types or other incidental errors).
261
262   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.
267
268   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.
273
274   .. 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.
305
306
307   .. versionchanged:: 3.3
308      :exc:`EnvironmentError`, :exc:`IOError`, :exc:`WindowsError`,
309      :exc:`socket.error`, :exc:`select.error` and
310      :exc:`mmap.error` have been merged into :exc:`OSError`, and the
311      constructor may return a subclass.
312
313   .. versionchanged:: 3.4
314      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
316      filesystem encoding.  Also, the *filename2* constructor argument and
317      attribute was added.
318
319
320.. exception:: OverflowError
321
322   Raised when the result of an arithmetic operation is too large to be
323   represented.  This cannot occur for integers (which would rather raise
324   :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.
328
329
330.. 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
340.. 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
347
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
352   wrong.
353
354
355.. exception:: StopIteration
356
357   Raised by built-in function :func:`next` and an :term:`iterator`\'s
358   :meth:`~iterator.__next__` method to signal that there are no further
359   items produced by the iterator.
360
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
365   When a :term:`generator` or :term:`coroutine` function
366   returns, a new :exc:`StopIteration` instance is
367   raised, and the value returned by the function is used as the
368   :attr:`value` parameter to the constructor of the exception.
369
370   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).
373
374   .. versionchanged:: 3.3
375      Added ``value`` attribute and the ability for generator functions to
376      use it to return a value.
377
378   .. versionchanged:: 3.5
379      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`.
385
386.. 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
392
393.. 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
400   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
405.. 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
417.. 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
432   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
441   the exit status is one.
442
443   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
448   process after a call to :func:`os.fork`).
449
450   .. attribute:: code
451
452      The exit status or error message that is passed to the constructor.
453      (Defaults to ``None``.)
454
455
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
461   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`.
470
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
477
478.. exception:: UnicodeError
479
480   Raised when a Unicode-related encoding or decoding error occurs.  It is a
481   subclass of :exc:`ValueError`.
482
483   :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
507
508.. exception:: UnicodeEncodeError
509
510   Raised when a Unicode-related error occurs during encoding.  It is a subclass of
511   :exc:`UnicodeError`.
512
513
514.. exception:: UnicodeDecodeError
515
516   Raised when a Unicode-related error occurs during decoding.  It is a subclass of
517   :exc:`UnicodeError`.
518
519
520.. exception:: UnicodeTranslateError
521
522   Raised when a Unicode-related error occurs during translating.  It is a subclass
523   of :exc:`UnicodeError`.
524
525
526.. exception:: ValueError
527
528   Raised when an operation or function receives an argument that has the
529   right type but an inappropriate value, and the situation is not described by a
530   more precise exception such as :exc:`IndexError`.
531
532
533.. 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
539
540The 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
547.. 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
565   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
574.. 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
581   A base class for connection-related issues.
582
583   Subclasses are :exc:`BrokenPipeError`, :exc:`ConnectionAbortedError`,
584   :exc:`ConnectionRefusedError` and :exc:`ConnectionResetError`.
585
586.. exception:: BrokenPipeError
587
588   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``.
592
593.. exception:: ConnectionAbortedError
594
595   A subclass of :exc:`ConnectionError`, raised when a connection attempt
596   is aborted by the peer.
597   Corresponds to :c:data:`errno` ``ECONNABORTED``.
598
599.. exception:: ConnectionRefusedError
600
601   A subclass of :exc:`ConnectionError`, raised when a connection attempt
602   is refused by the peer.
603   Corresponds to :c:data:`errno` ``ECONNREFUSED``.
604
605.. exception:: ConnectionResetError
606
607   A subclass of :exc:`ConnectionError`, raised when a connection is
608   reset by the peer.
609   Corresponds to :c:data:`errno` ``ECONNRESET``.
610
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.
624   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`.
630
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
666
667
668.. _warning-categories-as-exceptions:
669
670Warnings
671--------
672
673The following exceptions are used as warning categories; see the
674:ref:`warning-categories` documentation for more details.
675
676.. 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
688   Base class for warnings about deprecated features when those warnings are
689   intended for other Python developers.
690
691
692.. exception:: PendingDeprecationWarning
693
694   Base class for warnings about features which will be deprecated in the
695   future.
696
697
698.. exception:: SyntaxWarning
699
700   Base class for warnings about dubious syntax.
701
702
703.. exception:: RuntimeWarning
704
705   Base class for warnings about dubious runtime behavior.
706
707
708.. exception:: FutureWarning
709
710   Base class for warnings about deprecated features when those warnings are
711   intended for end users of applications that are written in Python.
712
713
714.. exception:: ImportWarning
715
716   Base class for warnings about probable mistakes in module imports.
717
718
719.. exception:: UnicodeWarning
720
721   Base class for warnings related to Unicode.
722
723
724.. exception:: BytesWarning
725
726   Base class for warnings related to :class:`bytes` and :class:`bytearray`.
727
728
729.. exception:: ResourceWarning
730
731   Base class for warnings related to resource usage. Ignored by the default
732   warning filters.
733
734   .. versionadded:: 3.2
735
736
737
738Exception hierarchy
739-------------------
740
741The class hierarchy for built-in exceptions is:
742
743.. literalinclude:: ../../Lib/test/exception_hierarchy.txt
744