exceptions.rst 23.6 KB
Newer Older
1 2 3 4 5 6 7 8 9
.. _bltin-exceptions:

Built-in Exceptions
===================

.. index::
   statement: try
   statement: except

10 11
In Python, all exceptions must be instances of a class that derives from
:class:`BaseException`.  In a :keyword:`try` statement with an :keyword:`except`
12 13 14 15 16 17 18 19 20
clause that mentions a particular class, that clause also handles any exception
classes derived from that class (but not exception classes from which *it* is
derived).  Two exception classes that are not related via subclassing are never
equivalent, even if they have the same name.

.. index:: statement: raise

The built-in exceptions listed below can be generated by the interpreter or
built-in functions.  Except where mentioned, they have an "associated value"
21 22 23 24
indicating the detailed cause of the error.  This may be a string or a tuple of
several items of information (e.g., an error code and a string explaining the
code).  The associated value is usually passed as arguments to the exception
class's constructor.
25 26 27 28 29 30

User code can raise built-in exceptions.  This can be used to test an exception
handler or to report an error condition "just like" the situation in which the
interpreter raises the same exception; but beware that there is nothing to
prevent user code from raising an inappropriate error.

31 32 33 34
The built-in exception classes can be subclassed to define new exceptions;
programmers are encouraged to derive new exceptions from the :exc:`Exception`
class or one of its subclasses, and not from :exc:`BaseException`.  More
information on defining exceptions is available in the Python Tutorial under
35 36
:ref:`tut-userexceptions`.

37 38
When raising (or re-raising) an exception in an :keyword:`except` or
:keyword:`finally` clause
39 40 41 42
:attr:`__context__` is automatically set to the last exception caught; if the
new exception is not handled the traceback that is eventually displayed will
include the originating exception(s) and the final exception.

43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
When raising a new exception (rather than using a bare ``raise`` to re-raise
the exception currently being handled), the implicit exception context can be
supplemented with an explicit cause by using :keyword:`from` with
:keyword:`raise`::

   raise new_exc from original_exc

The expression following :keyword:`from` must be an exception or ``None``. It
will be set as :attr:`__cause__` on the raised exception. Setting
:attr:`__cause__` also implicitly sets the :attr:`__suppress_context__`
attribute to ``True``, so that using ``raise new_exc from None``
effectively replaces the old exception with the new one for display
purposes (e.g. converting :exc:`KeyError` to :exc:`AttributeError`, while
leaving the old exception available in :attr:`__context__` for introspection
when debugging.
58 59 60 61 62

The default traceback display code shows these chained exceptions in
addition to the traceback for the exception itself. An explicitly chained
exception in :attr:`__cause__` is always shown when present. An implicitly
chained exception in :attr:`__context__` is shown only if :attr:`__cause__`
63
is :const:`None` and :attr:`__suppress_context__` is false.
64 65 66 67

In either case, the exception itself is always shown after any chained
exceptions so that the final line of the traceback always shows the last
exception that was raised.
68

69 70 71 72

Base classes
------------

73
The following exceptions are used mostly as base classes for other exceptions.
74 75 76 77

.. exception:: BaseException

   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 80 81
   :func:`str` is called on an instance of this class, the representation of
   the argument(s) to the instance are returned, or the empty string when
   there were no arguments.
82 83 84 85

   .. attribute:: args

      The tuple of arguments given to the exception constructor.  Some built-in
Andrew Svetlov's avatar
Andrew Svetlov committed
86
      exceptions (like :exc:`OSError`) expect a certain number of arguments and
87 88 89 90 91 92 93 94 95 96 97 98 99 100
      assign a special meaning to the elements of this tuple, while others are
      usually called only with a single string giving an error message.

   .. method:: with_traceback(tb)

      This method sets *tb* as the new traceback for the exception and returns
      the exception object.  It is usually used in exception handling code like
      this::

         try:
             ...
         except SomeException:
             tb = sys.exc_info()[2]
             raise OtherException(...).with_traceback(tb)
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115


.. exception:: Exception

   All built-in, non-system-exiting exceptions are derived from this class.  All
   user-defined exceptions should also be derived from this class.


.. exception:: ArithmeticError

   The base class for those built-in exceptions that are raised for various
   arithmetic errors: :exc:`OverflowError`, :exc:`ZeroDivisionError`,
   :exc:`FloatingPointError`.


116 117 118 119 120 121
.. exception:: BufferError

   Raised when a :ref:`buffer <bufferobjects>` related operation cannot be
   performed.


122 123
.. exception:: LookupError

Benjamin Peterson's avatar
Benjamin Peterson committed
124 125 126
   The base class for the exceptions that are raised when a key or index used on
   a mapping or sequence is invalid: :exc:`IndexError`, :exc:`KeyError`.  This
   can be raised directly by :func:`codecs.lookup`.
127 128


129 130
Concrete exceptions
-------------------
131

132
The following exceptions are the exceptions that are usually raised.
133 134 135 136 137 138 139 140 141 142

.. exception:: AssertionError

   .. index:: statement: assert

   Raised when an :keyword:`assert` statement fails.


.. exception:: AttributeError

143 144 145
   Raised when an attribute reference (see :ref:`attribute-references`) or
   assignment fails.  (When an object does not support attribute references or
   attribute assignments at all, :exc:`TypeError` is raised.)
146 147 148 149


.. exception:: EOFError

150 151 152
   Raised when the :func:`input` function hits an end-of-file condition (EOF)
   without reading any data. (N.B.: the :meth:`io.IOBase.read` and
   :meth:`io.IOBase.readline` methods return an empty string when they hit EOF.)
153 154 155 156 157 158


.. exception:: FloatingPointError

   Raised when a floating point operation fails.  This exception is always defined,
   but can only be raised when Python is configured with the
159
   ``--with-fpectl`` option, or the :const:`WANT_SIGFPE_HANDLER` symbol is
160 161 162 163 164
   defined in the :file:`pyconfig.h` file.


.. exception:: GeneratorExit

165 166
   Raised when a :term:`generator` or :term:`coroutine` is closed;
   see :meth:`generator.close` and :meth:`coroutine.close`.  It
167 168
   directly inherits from :exc:`BaseException` instead of :exc:`Exception` since
   it is technically not an error.
169 170 171 172


.. exception:: ImportError

173 174
   Raised when an :keyword:`import` statement fails to find the module definition
   or when a ``from ... import`` fails to find a name that is to be imported.
175

176 177 178 179 180 181 182 183
   The :attr:`name` and :attr:`path` attributes can be set using keyword-only
   arguments to the constructor. When set they represent the name of the module
   that was attempted to be imported and the path to any file which triggered
   the exception, respectively.

   .. versionchanged:: 3.3
      Added the :attr:`name` and :attr:`path` attributes.

184 185 186

.. exception:: IndexError

187 188 189
   Raised when a sequence subscript is out of range.  (Slice indices are
   silently truncated to fall in the allowed range; if an index is not an
   integer, :exc:`TypeError` is raised.)
190

191
   .. XXX xref to sequences
192 193 194 195 196 197


.. exception:: KeyError

   Raised when a mapping (dictionary) key is not found in the set of existing keys.

198
   .. XXX xref to mapping objects?
199 200 201 202 203


.. exception:: KeyboardInterrupt

   Raised when the user hits the interrupt key (normally :kbd:`Control-C` or
204 205 206 207
   :kbd:`Delete`).  During execution, a check for interrupts is made
   regularly. The exception inherits from :exc:`BaseException` so as to not be
   accidentally caught by code that catches :exc:`Exception` and thus prevent
   the interpreter from exiting.
208 209 210 211 212 213 214


.. exception:: MemoryError

   Raised when an operation runs out of memory but the situation may still be
   rescued (by deleting some objects).  The associated value is a string indicating
   what kind of (internal) operation ran out of memory. Note that because of the
215
   underlying memory management architecture (C's :c:func:`malloc` function), the
216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234
   interpreter may not always be able to completely recover from this situation; it
   nevertheless raises an exception so that a stack traceback can be printed, in
   case a run-away program was the cause.


.. exception:: NameError

   Raised when a local or global name is not found.  This applies only to
   unqualified names.  The associated value is an error message that includes the
   name that could not be found.


.. exception:: NotImplementedError

   This exception is derived from :exc:`RuntimeError`.  In user defined base
   classes, abstract methods should raise this exception when they require derived
   classes to override the method.


235 236
.. exception:: OSError([arg])
               OSError(errno, strerror[, filename[, winerror[, filename2]]])
237

238 239
   .. index:: module: errno

240 241
   This exception is raised when a system function returns a system-related
   error, including I/O failures such as "file not found" or "disk full"
242
   (not for illegal argument types or other incidental errors).
243

244 245 246 247 248
   The second form of the constructor sets the corresponding attributes,
   described below.  The attributes default to :const:`None` if not
   specified.  For backwards compatibility, if three arguments are passed,
   the :attr:`~BaseException.args` attribute contains only a 2-tuple
   of the first two constructor arguments.
249

250 251 252 253 254
   The constructor often actually returns a subclass of :exc:`OSError`, as
   described in `OS exceptions`_ below.  The particular subclass depends on
   the final :attr:`.errno` value.  This behaviour only occurs when
   constructing :exc:`OSError` directly or via an alias, and is not
   inherited when subclassing.
255

256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286
   .. attribute:: errno

      A numeric error code from the C variable :c:data:`errno`.

   .. attribute:: winerror

      Under Windows, this gives you the native
      Windows error code.  The :attr:`.errno` attribute is then an approximate
      translation, in POSIX terms, of that native error code.

      Under Windows, if the *winerror* constructor argument is an integer,
      the :attr:`.errno` attribute is determined from the Windows error code,
      and the *errno* argument is ignored.  On other platforms, the
      *winerror* argument is ignored, and the :attr:`winerror` attribute
      does not exist.

   .. attribute:: strerror

      The corresponding error message, as provided by
      the operating system.  It is formatted by the C
      functions :c:func:`perror` under POSIX, and :c:func:`FormatMessage`
      under Windows.

   .. attribute:: filename
                  filename2

      For exceptions that involve a file system path (such as :func:`open` or
      :func:`os.unlink`), :attr:`filename` is the file name passed to the function.
      For functions that involve two file system paths (such as
      :func:`os.rename`), :attr:`filename2` corresponds to the second
      file name passed to the function.
287

288

289 290
   .. versionchanged:: 3.3
      :exc:`EnvironmentError`, :exc:`IOError`, :exc:`WindowsError`,
291
      :exc:`socket.error`, :exc:`select.error` and
292 293
      :exc:`mmap.error` have been merged into :exc:`OSError`, and the
      constructor may return a subclass.
294

295 296 297
   .. versionchanged:: 3.4
      The :attr:`filename` attribute is now the original file name passed to
      the function, instead of the name encoded to or decoded from the
298 299
      filesystem encoding.  Also, the *filename2* constructor argument and
      attribute was added.
300

301 302 303 304

.. exception:: OverflowError

   Raised when the result of an arithmetic operation is too large to be
305
   represented.  This cannot occur for integers (which would rather raise
306 307 308 309
   :exc:`MemoryError` than give up).  However, for historical reasons,
   OverflowError is sometimes raised for integers that are outside a required
   range.   Because of the lack of standardization of floating point exception
   handling in C, most floating point operations are not checked.
310 311


312 313 314 315 316 317 318 319 320 321
.. exception:: RecursionError

   This exception is derived from :exc:`RuntimeError`.  It is raised when the
   interpreter detects that the maximum recursion depth (see
   :func:`sys.getrecursionlimit`) is exceeded.

   .. versionadded:: 3.5
      Previously, a plain :exc:`RuntimeError` was raised.


322 323 324 325 326 327 328 329 330 331 332 333
.. exception:: ReferenceError

   This exception is raised when a weak reference proxy, created by the
   :func:`weakref.proxy` function, is used to access an attribute of the referent
   after it has been garbage collected. For more information on weak references,
   see the :mod:`weakref` module.


.. exception:: RuntimeError

   Raised when an error is detected that doesn't fall in any of the other
   categories.  The associated value is a string indicating what precisely went
334
   wrong.
335 336 337 338


.. exception:: StopIteration

339
   Raised by built-in function :func:`next` and an :term:`iterator`\'s
340 341
   :meth:`~iterator.__next__` method to signal that there are no further
   items produced by the iterator.
342 343 344 345 346

   The exception object has a single attribute :attr:`value`, which is
   given as an argument when constructing the exception, and defaults
   to :const:`None`.

347 348
   When a :term:`generator` or :term:`coroutine` function
   returns, a new :exc:`StopIteration` instance is
349 350
   raised, and the value returned by the function is used as the
   :attr:`value` parameter to the constructor of the exception.
351

352 353 354 355 356
   If a generator function defined in the presence of a ``from __future__
   import generator_stop`` directive raises :exc:`StopIteration`, it will be
   converted into a :exc:`RuntimeError` (retaining the :exc:`StopIteration`
   as the new exception's cause).

357 358 359
   .. versionchanged:: 3.3
      Added ``value`` attribute and the ability for generator functions to
      use it to return a value.
360

361 362 363
   .. versionchanged:: 3.5
      Introduced the RuntimeError transformation.

364 365 366 367 368 369 370
.. exception:: StopAsyncIteration

   Must be raised by :meth:`__anext__` method of an
   :term:`asynchronous iterator` object to stop the iteration.

   .. versionadded:: 3.5

371 372 373 374 375 376 377 378 379 380 381 382
.. exception:: SyntaxError

   Raised when the parser encounters a syntax error.  This may occur in an
   :keyword:`import` statement, in a call to the built-in functions :func:`exec`
   or :func:`eval`, or when reading the initial script or standard input
   (also interactively).

   Instances of this class have attributes :attr:`filename`, :attr:`lineno`,
   :attr:`offset` and :attr:`text` for easier access to the details.  :func:`str`
   of the exception instance returns only the message.


383 384 385 386 387 388 389 390 391 392 393 394
.. exception:: IndentationError

   Base class for syntax errors related to incorrect indentation.  This is a
   subclass of :exc:`SyntaxError`.


.. exception:: TabError

   Raised when indentation contains an inconsistent use of tabs and spaces.
   This is a subclass of :exc:`IndentationError`.


395 396 397 398 399 400 401 402 403 404 405 406 407 408 409
.. exception:: SystemError

   Raised when the interpreter finds an internal error, but the situation does not
   look so serious to cause it to abandon all hope. The associated value is a
   string indicating what went wrong (in low-level terms).

   You should report this to the author or maintainer of your Python interpreter.
   Be sure to report the version of the Python interpreter (``sys.version``; it is
   also printed at the start of an interactive Python session), the exact error
   message (the exception's associated value) and if possible the source of the
   program that triggered the error.


.. exception:: SystemExit

410 411 412 413 414 415 416 417 418
   This exception is raised by the :func:`sys.exit` function.  It inherits from
   :exc:`BaseException` instead of :exc:`Exception` so that it is not accidentally
   caught by code that catches :exc:`Exception`.  This allows the exception to
   properly propagate up and cause the interpreter to exit.  When it is not
   handled, the Python interpreter exits; no stack traceback is printed.  The
   constructor accepts the same optional argument passed to :func:`sys.exit`.
   If the value is an integer, it specifies the system exit status (passed to
   C's :c:func:`exit` function); if it is ``None``, the exit status is zero; if
   it has another type (such as a string), the object's value is printed and
419
   the exit status is one.
420 421 422 423 424 425

   A call to :func:`sys.exit` is translated into an exception so that clean-up
   handlers (:keyword:`finally` clauses of :keyword:`try` statements) can be
   executed, and so that a debugger can execute a script without running the risk
   of losing control.  The :func:`os._exit` function can be used if it is
   absolutely positively necessary to exit immediately (for example, in the child
426
   process after a call to :func:`os.fork`).
427

428 429 430 431
   .. attribute:: code

      The exit status or error message that is passed to the constructor.
      (Defaults to ``None``.)
432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451


.. exception:: TypeError

   Raised when an operation or function is applied to an object of inappropriate
   type.  The associated value is a string giving details about the type mismatch.


.. exception:: UnboundLocalError

   Raised when a reference is made to a local variable in a function or method, but
   no value has been bound to that variable.  This is a subclass of
   :exc:`NameError`.


.. exception:: UnicodeError

   Raised when a Unicode-related encoding or decoding error occurs.  It is a
   subclass of :exc:`ValueError`.

452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475
   :exc:`UnicodeError` has attributes that describe the encoding or decoding
   error.  For example, ``err.object[err.start:err.end]`` gives the particular
   invalid input that the codec failed on.

   .. attribute:: encoding

       The name of the encoding that raised the error.

   .. attribute:: reason

       A string describing the specific codec error.

   .. attribute:: object

       The object the codec was attempting to encode or decode.

   .. attribute:: start

       The first index of invalid data in :attr:`object`.

   .. attribute:: end

       The index after the last invalid data in :attr:`object`.

476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501

.. exception:: UnicodeEncodeError

   Raised when a Unicode-related error occurs during encoding.  It is a subclass of
   :exc:`UnicodeError`.


.. exception:: UnicodeDecodeError

   Raised when a Unicode-related error occurs during decoding.  It is a subclass of
   :exc:`UnicodeError`.


.. exception:: UnicodeTranslateError

   Raised when a Unicode-related error occurs during translating.  It is a subclass
   of :exc:`UnicodeError`.


.. exception:: ValueError

   Raised when a built-in operation or function receives an argument that has the
   right type but an inappropriate value, and the situation is not described by a
   more precise exception such as :exc:`IndexError`.


502
.. exception:: ZeroDivisionError
Benjamin Peterson's avatar
Benjamin Peterson committed
503

504 505 506 507 508 509 510 511 512 513 514
   Raised when the second argument of a division or modulo operation is zero.  The
   associated value is a string indicating the type of the operands and the
   operation.


The following exceptions are kept for compatibility with previous versions;
starting from Python 3.3, they are aliases of :exc:`OSError`.

.. exception:: EnvironmentError

.. exception:: IOError
Benjamin Peterson's avatar
Benjamin Peterson committed
515

516 517
.. exception:: WindowsError

518
   Only available on Windows.
519 520


521 522 523 524 525 526 527 528 529 530 531 532 533
OS exceptions
^^^^^^^^^^^^^

The following exceptions are subclasses of :exc:`OSError`, they get raised
depending on the system error code.

.. exception:: BlockingIOError

   Raised when an operation would block on an object (e.g. socket) set
   for non-blocking operation.
   Corresponds to :c:data:`errno` ``EAGAIN``, ``EALREADY``,
   ``EWOULDBLOCK`` and ``EINPROGRESS``.

534 535 536 537 538 539 540 541 542
   In addition to those of :exc:`OSError`, :exc:`BlockingIOError` can have
   one more attribute:

   .. attribute:: characters_written

      An integer containing the number of characters written to the stream
      before it blocked.  This attribute is available when using the
      buffered I/O classes from the :mod:`io` module.

543 544 545 546 547 548 549
.. exception:: ChildProcessError

   Raised when an operation on a child process failed.
   Corresponds to :c:data:`errno` ``ECHILD``.

.. exception:: ConnectionError

550 551 552
   A base class for connection-related issues.

   Subclasses are :exc:`BrokenPipeError`, :exc:`ConnectionAbortedError`,
553 554
   :exc:`ConnectionRefusedError` and :exc:`ConnectionResetError`.

555
.. exception:: BrokenPipeError
556

557 558 559 560
   A subclass of :exc:`ConnectionError`, raised when trying to write on a
   pipe while the other end has been closed, or trying to write on a socket
   which has been shutdown for writing.
   Corresponds to :c:data:`errno` ``EPIPE`` and ``ESHUTDOWN``.
561

562
.. exception:: ConnectionAbortedError
563

564 565 566
   A subclass of :exc:`ConnectionError`, raised when a connection attempt
   is aborted by the peer.
   Corresponds to :c:data:`errno` ``ECONNABORTED``.
567

568
.. exception:: ConnectionRefusedError
569

570 571 572
   A subclass of :exc:`ConnectionError`, raised when a connection attempt
   is refused by the peer.
   Corresponds to :c:data:`errno` ``ECONNREFUSED``.
573

574
.. exception:: ConnectionResetError
575

576 577 578
   A subclass of :exc:`ConnectionError`, raised when a connection is
   reset by the peer.
   Corresponds to :c:data:`errno` ``ECONNRESET``.
579 580 581 582 583 584 585 586 587 588 589 590 591 592

.. exception:: FileExistsError

   Raised when trying to create a file or directory which already exists.
   Corresponds to :c:data:`errno` ``EEXIST``.

.. exception:: FileNotFoundError

   Raised when a file or directory is requested but doesn't exist.
   Corresponds to :c:data:`errno` ``ENOENT``.

.. exception:: InterruptedError

   Raised when a system call is interrupted by an incoming signal.
593 594 595 596 597 598
   Corresponds to :c:data:`errno` :py:data:`~errno.EINTR`.

   .. versionchanged:: 3.5
      Python now retries system calls when a syscall is interrupted by a
      signal, except if the signal handler raises an exception (see :pep:`475`
      for the rationale), instead of raising :exc:`InterruptedError`.
599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634

.. exception:: IsADirectoryError

   Raised when a file operation (such as :func:`os.remove`) is requested
   on a directory.
   Corresponds to :c:data:`errno` ``EISDIR``.

.. exception:: NotADirectoryError

   Raised when a directory operation (such as :func:`os.listdir`) is requested
   on something which is not a directory.
   Corresponds to :c:data:`errno` ``ENOTDIR``.

.. exception:: PermissionError

   Raised when trying to run an operation without the adequate access
   rights - for example filesystem permissions.
   Corresponds to :c:data:`errno` ``EACCES`` and ``EPERM``.

.. exception:: ProcessLookupError

   Raised when a given process doesn't exist.
   Corresponds to :c:data:`errno` ``ESRCH``.

.. exception:: TimeoutError

   Raised when a system function timed out at the system level.
   Corresponds to :c:data:`errno` ``ETIMEDOUT``.

.. versionadded:: 3.3
   All the above :exc:`OSError` subclasses were added.


.. seealso::

   :pep:`3151` - Reworking the OS and IO exception hierarchy
635 636


637 638
Warnings
--------
639

640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664
The following exceptions are used as warning categories; see the :mod:`warnings`
module for more information.

.. exception:: Warning

   Base class for warning categories.


.. exception:: UserWarning

   Base class for warnings generated by user code.


.. exception:: DeprecationWarning

   Base class for warnings about deprecated features.


.. exception:: PendingDeprecationWarning

   Base class for warnings about features which will be deprecated in the future.


.. exception:: SyntaxWarning

665
   Base class for warnings about dubious syntax.
666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687


.. exception:: RuntimeWarning

   Base class for warnings about dubious runtime behavior.


.. exception:: FutureWarning

   Base class for warnings about constructs that will change semantically in the
   future.


.. exception:: ImportWarning

   Base class for warnings about probable mistakes in module imports.


.. exception:: UnicodeWarning

   Base class for warnings related to Unicode.

688

689 690
.. exception:: BytesWarning

691
   Base class for warnings related to :class:`bytes` and :class:`bytearray`.
692

693 694 695 696 697 698 699 700 701

.. exception:: ResourceWarning

   Base class for warnings related to resource usage.

   .. versionadded:: 3.2



702 703
Exception hierarchy
-------------------
704

705 706
The class hierarchy for built-in exceptions is:

707
.. literalinclude:: ../../Lib/test/exception_hierarchy.txt