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