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 37 38Exception context 39----------------- 40 41When raising (or re-raising) an exception in an :keyword:`except` or 42:keyword:`finally` clause 43:attr:`__context__` is automatically set to the last exception caught; if the 44new exception is not handled the traceback that is eventually displayed will 45include the originating exception(s) and the final exception. 46 47When raising a new exception (rather than using a bare ``raise`` to re-raise 48the exception currently being handled), the implicit exception context can be 49supplemented with an explicit cause by using :keyword:`from<raise>` with 50:keyword:`raise`:: 51 52 raise new_exc from original_exc 53 54The expression following :keyword:`from<raise>` must be an exception or ``None``. It 55will be set as :attr:`__cause__` on the raised exception. Setting 56:attr:`__cause__` also implicitly sets the :attr:`__suppress_context__` 57attribute to ``True``, so that using ``raise new_exc from None`` 58effectively replaces the old exception with the new one for display 59purposes (e.g. converting :exc:`KeyError` to :exc:`AttributeError`), while 60leaving the old exception available in :attr:`__context__` for introspection 61when debugging. 62 63The default traceback display code shows these chained exceptions in 64addition to the traceback for the exception itself. An explicitly chained 65exception in :attr:`__cause__` is always shown when present. An implicitly 66chained exception in :attr:`__context__` is shown only if :attr:`__cause__` 67is :const:`None` and :attr:`__suppress_context__` is false. 68 69In either case, the exception itself is always shown after any chained 70exceptions so that the final line of the traceback always shows the last 71exception that was raised. 72 73 74Inheriting from built-in exceptions 75----------------------------------- 76 77User code can create subclasses that inherit from an exception type. 78It's recommended to only subclass one exception type at a time to avoid 79any possible conflicts between how the bases handle the ``args`` 80attribute, as well as due to possible memory layout incompatibilities. 81 82.. impl-detail:: 83 84 Most built-in exceptions are implemented in C for efficiency, see: 85 :source:`Objects/exceptions.c`. Some have custom memory layouts 86 which makes it impossible to create a subclass that inherits from 87 multiple exception types. The memory layout of a type is an implementation 88 detail and might change between Python versions, leading to new 89 conflicts in the future. Therefore, it's recommended to avoid 90 subclassing multiple exception types altogether. 91 92 93Base classes 94------------ 95 96The following exceptions are used mostly as base classes for other exceptions. 97 98.. exception:: BaseException 99 100 The base class for all built-in exceptions. It is not meant to be directly 101 inherited by user-defined classes (for that, use :exc:`Exception`). If 102 :func:`str` is called on an instance of this class, the representation of 103 the argument(s) to the instance are returned, or the empty string when 104 there were no arguments. 105 106 .. attribute:: args 107 108 The tuple of arguments given to the exception constructor. Some built-in 109 exceptions (like :exc:`OSError`) expect a certain number of arguments and 110 assign a special meaning to the elements of this tuple, while others are 111 usually called only with a single string giving an error message. 112 113 .. method:: with_traceback(tb) 114 115 This method sets *tb* as the new traceback for the exception and returns 116 the exception object. It was more commonly used before the exception 117 chaining features of :pep:`3134` became available. The following example 118 shows how we can convert an instance of ``SomeException`` into an 119 instance of ``OtherException`` while preserving the traceback. Once 120 raised, the current frame is pushed onto the traceback of the 121 ``OtherException``, as would have happened to the traceback of the 122 original ``SomeException`` had we allowed it to propagate to the caller. :: 123 124 try: 125 ... 126 except SomeException: 127 tb = sys.exc_info()[2] 128 raise OtherException(...).with_traceback(tb) 129 130 131.. exception:: Exception 132 133 All built-in, non-system-exiting exceptions are derived from this class. All 134 user-defined exceptions should also be derived from this class. 135 136 137.. exception:: ArithmeticError 138 139 The base class for those built-in exceptions that are raised for various 140 arithmetic errors: :exc:`OverflowError`, :exc:`ZeroDivisionError`, 141 :exc:`FloatingPointError`. 142 143 144.. exception:: BufferError 145 146 Raised when a :ref:`buffer <bufferobjects>` related operation cannot be 147 performed. 148 149 150.. exception:: LookupError 151 152 The base class for the exceptions that are raised when a key or index used on 153 a mapping or sequence is invalid: :exc:`IndexError`, :exc:`KeyError`. This 154 can be raised directly by :func:`codecs.lookup`. 155 156 157Concrete exceptions 158------------------- 159 160The following exceptions are the exceptions that are usually raised. 161 162.. exception:: AssertionError 163 164 .. index:: statement: assert 165 166 Raised when an :keyword:`assert` statement fails. 167 168 169.. exception:: AttributeError 170 171 Raised when an attribute reference (see :ref:`attribute-references`) or 172 assignment fails. (When an object does not support attribute references or 173 attribute assignments at all, :exc:`TypeError` is raised.) 174 175 The :attr:`name` and :attr:`obj` attributes can be set using keyword-only 176 arguments to the constructor. When set they represent the name of the attribute 177 that was attempted to be accessed and the object that was accessed for said 178 attribute, respectively. 179 180 .. versionchanged:: 3.10 181 Added the :attr:`name` and :attr:`obj` attributes. 182 183.. exception:: EOFError 184 185 Raised when the :func:`input` function hits an end-of-file condition (EOF) 186 without reading any data. (N.B.: the :meth:`io.IOBase.read` and 187 :meth:`io.IOBase.readline` methods return an empty string when they hit EOF.) 188 189 190.. exception:: FloatingPointError 191 192 Not currently used. 193 194 195.. exception:: GeneratorExit 196 197 Raised when a :term:`generator` or :term:`coroutine` is closed; 198 see :meth:`generator.close` and :meth:`coroutine.close`. It 199 directly inherits from :exc:`BaseException` instead of :exc:`Exception` since 200 it is technically not an error. 201 202 203.. exception:: ImportError 204 205 Raised when the :keyword:`import` statement has troubles trying to 206 load a module. Also raised when the "from list" in ``from ... import`` 207 has a name that cannot be found. 208 209 The :attr:`name` and :attr:`path` attributes can be set using keyword-only 210 arguments to the constructor. When set they represent the name of the module 211 that was attempted to be imported and the path to any file which triggered 212 the exception, respectively. 213 214 .. versionchanged:: 3.3 215 Added the :attr:`name` and :attr:`path` attributes. 216 217.. exception:: ModuleNotFoundError 218 219 A subclass of :exc:`ImportError` which is raised by :keyword:`import` 220 when a module could not be located. It is also raised when ``None`` 221 is found in :data:`sys.modules`. 222 223 .. versionadded:: 3.6 224 225 226.. exception:: IndexError 227 228 Raised when a sequence subscript is out of range. (Slice indices are 229 silently truncated to fall in the allowed range; if an index is not an 230 integer, :exc:`TypeError` is raised.) 231 232 .. XXX xref to sequences 233 234 235.. exception:: KeyError 236 237 Raised when a mapping (dictionary) key is not found in the set of existing keys. 238 239 .. XXX xref to mapping objects? 240 241 242.. exception:: KeyboardInterrupt 243 244 Raised when the user hits the interrupt key (normally :kbd:`Control-C` or 245 :kbd:`Delete`). During execution, a check for interrupts is made 246 regularly. The exception inherits from :exc:`BaseException` so as to not be 247 accidentally caught by code that catches :exc:`Exception` and thus prevent 248 the interpreter from exiting. 249 250 251.. exception:: MemoryError 252 253 Raised when an operation runs out of memory but the situation may still be 254 rescued (by deleting some objects). The associated value is a string indicating 255 what kind of (internal) operation ran out of memory. Note that because of the 256 underlying memory management architecture (C's :c:func:`malloc` function), the 257 interpreter may not always be able to completely recover from this situation; it 258 nevertheless raises an exception so that a stack traceback can be printed, in 259 case a run-away program was the cause. 260 261 262.. exception:: NameError 263 264 Raised when a local or global name is not found. This applies only to 265 unqualified names. The associated value is an error message that includes the 266 name that could not be found. 267 268 The :attr:`name` attribute can be set using a keyword-only argument to the 269 constructor. When set it represent the name of the variable that was attempted 270 to be accessed. 271 272 .. versionchanged:: 3.10 273 Added the :attr:`name` attribute. 274 275 276.. exception:: NotImplementedError 277 278 This exception is derived from :exc:`RuntimeError`. In user defined base 279 classes, abstract methods should raise this exception when they require 280 derived classes to override the method, or while the class is being 281 developed to indicate that the real implementation still needs to be added. 282 283 .. note:: 284 285 It should not be used to indicate that an operator or method is not 286 meant to be supported at all -- in that case either leave the operator / 287 method undefined or, if a subclass, set it to :data:`None`. 288 289 .. note:: 290 291 ``NotImplementedError`` and ``NotImplemented`` are not interchangeable, 292 even though they have similar names and purposes. See 293 :data:`NotImplemented` for details on when to use it. 294 295.. exception:: OSError([arg]) 296 OSError(errno, strerror[, filename[, winerror[, filename2]]]) 297 298 .. index:: module: errno 299 300 This exception is raised when a system function returns a system-related 301 error, including I/O failures such as "file not found" or "disk full" 302 (not for illegal argument types or other incidental errors). 303 304 The second form of the constructor sets the corresponding attributes, 305 described below. The attributes default to :const:`None` if not 306 specified. For backwards compatibility, if three arguments are passed, 307 the :attr:`~BaseException.args` attribute contains only a 2-tuple 308 of the first two constructor arguments. 309 310 The constructor often actually returns a subclass of :exc:`OSError`, as 311 described in `OS exceptions`_ below. The particular subclass depends on 312 the final :attr:`.errno` value. This behaviour only occurs when 313 constructing :exc:`OSError` directly or via an alias, and is not 314 inherited when subclassing. 315 316 .. attribute:: errno 317 318 A numeric error code from the C variable :c:data:`errno`. 319 320 .. attribute:: winerror 321 322 Under Windows, this gives you the native 323 Windows error code. The :attr:`.errno` attribute is then an approximate 324 translation, in POSIX terms, of that native error code. 325 326 Under Windows, if the *winerror* constructor argument is an integer, 327 the :attr:`.errno` attribute is determined from the Windows error code, 328 and the *errno* argument is ignored. On other platforms, the 329 *winerror* argument is ignored, and the :attr:`winerror` attribute 330 does not exist. 331 332 .. attribute:: strerror 333 334 The corresponding error message, as provided by 335 the operating system. It is formatted by the C 336 functions :c:func:`perror` under POSIX, and :c:func:`FormatMessage` 337 under Windows. 338 339 .. attribute:: filename 340 filename2 341 342 For exceptions that involve a file system path (such as :func:`open` or 343 :func:`os.unlink`), :attr:`filename` is the file name passed to the function. 344 For functions that involve two file system paths (such as 345 :func:`os.rename`), :attr:`filename2` corresponds to the second 346 file name passed to the function. 347 348 349 .. versionchanged:: 3.3 350 :exc:`EnvironmentError`, :exc:`IOError`, :exc:`WindowsError`, 351 :exc:`socket.error`, :exc:`select.error` and 352 :exc:`mmap.error` have been merged into :exc:`OSError`, and the 353 constructor may return a subclass. 354 355 .. versionchanged:: 3.4 356 The :attr:`filename` attribute is now the original file name passed to 357 the function, instead of the name encoded to or decoded from the 358 :term:`filesystem encoding and error handler`. Also, the *filename2* 359 constructor argument and attribute was added. 360 361 362.. exception:: OverflowError 363 364 Raised when the result of an arithmetic operation is too large to be 365 represented. This cannot occur for integers (which would rather raise 366 :exc:`MemoryError` than give up). However, for historical reasons, 367 OverflowError is sometimes raised for integers that are outside a required 368 range. Because of the lack of standardization of floating point exception 369 handling in C, most floating point operations are not checked. 370 371 372.. exception:: RecursionError 373 374 This exception is derived from :exc:`RuntimeError`. It is raised when the 375 interpreter detects that the maximum recursion depth (see 376 :func:`sys.getrecursionlimit`) is exceeded. 377 378 .. versionadded:: 3.5 379 Previously, a plain :exc:`RuntimeError` was raised. 380 381 382.. exception:: ReferenceError 383 384 This exception is raised when a weak reference proxy, created by the 385 :func:`weakref.proxy` function, is used to access an attribute of the referent 386 after it has been garbage collected. For more information on weak references, 387 see the :mod:`weakref` module. 388 389 390.. exception:: RuntimeError 391 392 Raised when an error is detected that doesn't fall in any of the other 393 categories. The associated value is a string indicating what precisely went 394 wrong. 395 396 397.. exception:: StopIteration 398 399 Raised by built-in function :func:`next` and an :term:`iterator`\'s 400 :meth:`~iterator.__next__` method to signal that there are no further 401 items produced by the iterator. 402 403 The exception object has a single attribute :attr:`value`, which is 404 given as an argument when constructing the exception, and defaults 405 to :const:`None`. 406 407 When a :term:`generator` or :term:`coroutine` function 408 returns, a new :exc:`StopIteration` instance is 409 raised, and the value returned by the function is used as the 410 :attr:`value` parameter to the constructor of the exception. 411 412 If a generator code directly or indirectly raises :exc:`StopIteration`, 413 it is converted into a :exc:`RuntimeError` (retaining the 414 :exc:`StopIteration` as the new exception's cause). 415 416 .. versionchanged:: 3.3 417 Added ``value`` attribute and the ability for generator functions to 418 use it to return a value. 419 420 .. versionchanged:: 3.5 421 Introduced the RuntimeError transformation via 422 ``from __future__ import generator_stop``, see :pep:`479`. 423 424 .. versionchanged:: 3.7 425 Enable :pep:`479` for all code by default: a :exc:`StopIteration` 426 error raised in a generator is transformed into a :exc:`RuntimeError`. 427 428.. exception:: StopAsyncIteration 429 430 Must be raised by :meth:`__anext__` method of an 431 :term:`asynchronous iterator` object to stop the iteration. 432 433 .. versionadded:: 3.5 434 435.. exception:: SyntaxError(message, details) 436 437 Raised when the parser encounters a syntax error. This may occur in an 438 :keyword:`import` statement, in a call to the built-in functions 439 :func:`compile`, :func:`exec`, 440 or :func:`eval`, or when reading the initial script or standard input 441 (also interactively). 442 443 The :func:`str` of the exception instance returns only the error message. 444 Details is a tuple whose members are also available as separate attributes. 445 446 .. attribute:: filename 447 448 The name of the file the syntax error occurred in. 449 450 .. attribute:: lineno 451 452 Which line number in the file the error occurred in. This is 453 1-indexed: the first line in the file has a ``lineno`` of 1. 454 455 .. attribute:: offset 456 457 The column in the line where the error occurred. This is 458 1-indexed: the first character in the line has an ``offset`` of 1. 459 460 .. attribute:: text 461 462 The source code text involved in the error. 463 464 .. attribute:: end_lineno 465 466 Which line number in the file the error occurred ends in. This is 467 1-indexed: the first line in the file has a ``lineno`` of 1. 468 469 .. attribute:: end_offset 470 471 The column in the end line where the error occurred finishes. This is 472 1-indexed: the first character in the line has an ``offset`` of 1. 473 474 For errors in f-string fields, the message is prefixed by "f-string: " 475 and the offsets are offsets in a text constructed from the replacement 476 expression. For example, compiling f'Bad {a b} field' results in this 477 args attribute: ('f-string: ...', ('', 1, 2, '(a b)\n', 1, 5)). 478 479 .. versionchanged:: 3.10 480 Added the :attr:`end_lineno` and :attr:`end_offset` attributes. 481 482.. exception:: IndentationError 483 484 Base class for syntax errors related to incorrect indentation. This is a 485 subclass of :exc:`SyntaxError`. 486 487 488.. exception:: TabError 489 490 Raised when indentation contains an inconsistent use of tabs and spaces. 491 This is a subclass of :exc:`IndentationError`. 492 493 494.. exception:: SystemError 495 496 Raised when the interpreter finds an internal error, but the situation does not 497 look so serious to cause it to abandon all hope. The associated value is a 498 string indicating what went wrong (in low-level terms). 499 500 You should report this to the author or maintainer of your Python interpreter. 501 Be sure to report the version of the Python interpreter (``sys.version``; it is 502 also printed at the start of an interactive Python session), the exact error 503 message (the exception's associated value) and if possible the source of the 504 program that triggered the error. 505 506 507.. exception:: SystemExit 508 509 This exception is raised by the :func:`sys.exit` function. It inherits from 510 :exc:`BaseException` instead of :exc:`Exception` so that it is not accidentally 511 caught by code that catches :exc:`Exception`. This allows the exception to 512 properly propagate up and cause the interpreter to exit. When it is not 513 handled, the Python interpreter exits; no stack traceback is printed. The 514 constructor accepts the same optional argument passed to :func:`sys.exit`. 515 If the value is an integer, it specifies the system exit status (passed to 516 C's :c:func:`exit` function); if it is ``None``, the exit status is zero; if 517 it has another type (such as a string), the object's value is printed and 518 the exit status is one. 519 520 A call to :func:`sys.exit` is translated into an exception so that clean-up 521 handlers (:keyword:`finally` clauses of :keyword:`try` statements) can be 522 executed, and so that a debugger can execute a script without running the risk 523 of losing control. The :func:`os._exit` function can be used if it is 524 absolutely positively necessary to exit immediately (for example, in the child 525 process after a call to :func:`os.fork`). 526 527 .. attribute:: code 528 529 The exit status or error message that is passed to the constructor. 530 (Defaults to ``None``.) 531 532 533.. exception:: TypeError 534 535 Raised when an operation or function is applied to an object of inappropriate 536 type. The associated value is a string giving details about the type mismatch. 537 538 This exception may be raised by user code to indicate that an attempted 539 operation on an object is not supported, and is not meant to be. If an object 540 is meant to support a given operation but has not yet provided an 541 implementation, :exc:`NotImplementedError` is the proper exception to raise. 542 543 Passing arguments of the wrong type (e.g. passing a :class:`list` when an 544 :class:`int` is expected) should result in a :exc:`TypeError`, but passing 545 arguments with the wrong value (e.g. a number outside expected boundaries) 546 should result in a :exc:`ValueError`. 547 548.. exception:: UnboundLocalError 549 550 Raised when a reference is made to a local variable in a function or method, but 551 no value has been bound to that variable. This is a subclass of 552 :exc:`NameError`. 553 554 555.. exception:: UnicodeError 556 557 Raised when a Unicode-related encoding or decoding error occurs. It is a 558 subclass of :exc:`ValueError`. 559 560 :exc:`UnicodeError` has attributes that describe the encoding or decoding 561 error. For example, ``err.object[err.start:err.end]`` gives the particular 562 invalid input that the codec failed on. 563 564 .. attribute:: encoding 565 566 The name of the encoding that raised the error. 567 568 .. attribute:: reason 569 570 A string describing the specific codec error. 571 572 .. attribute:: object 573 574 The object the codec was attempting to encode or decode. 575 576 .. attribute:: start 577 578 The first index of invalid data in :attr:`object`. 579 580 .. attribute:: end 581 582 The index after the last invalid data in :attr:`object`. 583 584 585.. exception:: UnicodeEncodeError 586 587 Raised when a Unicode-related error occurs during encoding. It is a subclass of 588 :exc:`UnicodeError`. 589 590 591.. exception:: UnicodeDecodeError 592 593 Raised when a Unicode-related error occurs during decoding. It is a subclass of 594 :exc:`UnicodeError`. 595 596 597.. exception:: UnicodeTranslateError 598 599 Raised when a Unicode-related error occurs during translating. It is a subclass 600 of :exc:`UnicodeError`. 601 602 603.. exception:: ValueError 604 605 Raised when an operation or function receives an argument that has the 606 right type but an inappropriate value, and the situation is not described by a 607 more precise exception such as :exc:`IndexError`. 608 609 610.. exception:: ZeroDivisionError 611 612 Raised when the second argument of a division or modulo operation is zero. The 613 associated value is a string indicating the type of the operands and the 614 operation. 615 616 617The following exceptions are kept for compatibility with previous versions; 618starting from Python 3.3, they are aliases of :exc:`OSError`. 619 620.. exception:: EnvironmentError 621 622.. exception:: IOError 623 624.. exception:: WindowsError 625 626 Only available on Windows. 627 628 629OS exceptions 630^^^^^^^^^^^^^ 631 632The following exceptions are subclasses of :exc:`OSError`, they get raised 633depending on the system error code. 634 635.. exception:: BlockingIOError 636 637 Raised when an operation would block on an object (e.g. socket) set 638 for non-blocking operation. 639 Corresponds to :c:data:`errno` ``EAGAIN``, ``EALREADY``, 640 ``EWOULDBLOCK`` and ``EINPROGRESS``. 641 642 In addition to those of :exc:`OSError`, :exc:`BlockingIOError` can have 643 one more attribute: 644 645 .. attribute:: characters_written 646 647 An integer containing the number of characters written to the stream 648 before it blocked. This attribute is available when using the 649 buffered I/O classes from the :mod:`io` module. 650 651.. exception:: ChildProcessError 652 653 Raised when an operation on a child process failed. 654 Corresponds to :c:data:`errno` ``ECHILD``. 655 656.. exception:: ConnectionError 657 658 A base class for connection-related issues. 659 660 Subclasses are :exc:`BrokenPipeError`, :exc:`ConnectionAbortedError`, 661 :exc:`ConnectionRefusedError` and :exc:`ConnectionResetError`. 662 663.. exception:: BrokenPipeError 664 665 A subclass of :exc:`ConnectionError`, raised when trying to write on a 666 pipe while the other end has been closed, or trying to write on a socket 667 which has been shutdown for writing. 668 Corresponds to :c:data:`errno` ``EPIPE`` and ``ESHUTDOWN``. 669 670.. exception:: ConnectionAbortedError 671 672 A subclass of :exc:`ConnectionError`, raised when a connection attempt 673 is aborted by the peer. 674 Corresponds to :c:data:`errno` ``ECONNABORTED``. 675 676.. exception:: ConnectionRefusedError 677 678 A subclass of :exc:`ConnectionError`, raised when a connection attempt 679 is refused by the peer. 680 Corresponds to :c:data:`errno` ``ECONNREFUSED``. 681 682.. exception:: ConnectionResetError 683 684 A subclass of :exc:`ConnectionError`, raised when a connection is 685 reset by the peer. 686 Corresponds to :c:data:`errno` ``ECONNRESET``. 687 688.. exception:: FileExistsError 689 690 Raised when trying to create a file or directory which already exists. 691 Corresponds to :c:data:`errno` ``EEXIST``. 692 693.. exception:: FileNotFoundError 694 695 Raised when a file or directory is requested but doesn't exist. 696 Corresponds to :c:data:`errno` ``ENOENT``. 697 698.. exception:: InterruptedError 699 700 Raised when a system call is interrupted by an incoming signal. 701 Corresponds to :c:data:`errno` :py:data:`~errno.EINTR`. 702 703 .. versionchanged:: 3.5 704 Python now retries system calls when a syscall is interrupted by a 705 signal, except if the signal handler raises an exception (see :pep:`475` 706 for the rationale), instead of raising :exc:`InterruptedError`. 707 708.. exception:: IsADirectoryError 709 710 Raised when a file operation (such as :func:`os.remove`) is requested 711 on a directory. 712 Corresponds to :c:data:`errno` ``EISDIR``. 713 714.. exception:: NotADirectoryError 715 716 Raised when a directory operation (such as :func:`os.listdir`) is requested on 717 something which is not a directory. On most POSIX platforms, it may also be 718 raised if an operation attempts to open or traverse a non-directory file as if 719 it were a directory. 720 Corresponds to :c:data:`errno` ``ENOTDIR``. 721 722.. exception:: PermissionError 723 724 Raised when trying to run an operation without the adequate access 725 rights - for example filesystem permissions. 726 Corresponds to :c:data:`errno` ``EACCES`` and ``EPERM``. 727 728.. exception:: ProcessLookupError 729 730 Raised when a given process doesn't exist. 731 Corresponds to :c:data:`errno` ``ESRCH``. 732 733.. exception:: TimeoutError 734 735 Raised when a system function timed out at the system level. 736 Corresponds to :c:data:`errno` ``ETIMEDOUT``. 737 738.. versionadded:: 3.3 739 All the above :exc:`OSError` subclasses were added. 740 741 742.. seealso:: 743 744 :pep:`3151` - Reworking the OS and IO exception hierarchy 745 746 747.. _warning-categories-as-exceptions: 748 749Warnings 750-------- 751 752The following exceptions are used as warning categories; see the 753:ref:`warning-categories` documentation for more details. 754 755.. exception:: Warning 756 757 Base class for warning categories. 758 759 760.. exception:: UserWarning 761 762 Base class for warnings generated by user code. 763 764 765.. exception:: DeprecationWarning 766 767 Base class for warnings about deprecated features when those warnings are 768 intended for other Python developers. 769 770 Ignored by the default warning filters, except in the ``__main__`` module 771 (:pep:`565`). Enabling the :ref:`Python Development Mode <devmode>` shows 772 this warning. 773 774 The deprecation policy is described in :pep:`387`. 775 776 777.. exception:: PendingDeprecationWarning 778 779 Base class for warnings about features which are obsolete and 780 expected to be deprecated in the future, but are not deprecated 781 at the moment. 782 783 This class is rarely used as emitting a warning about a possible 784 upcoming deprecation is unusual, and :exc:`DeprecationWarning` 785 is preferred for already active deprecations. 786 787 Ignored by the default warning filters. Enabling the :ref:`Python 788 Development Mode <devmode>` shows this warning. 789 790 The deprecation policy is described in :pep:`387`. 791 792 793.. exception:: SyntaxWarning 794 795 Base class for warnings about dubious syntax. 796 797 798.. exception:: RuntimeWarning 799 800 Base class for warnings about dubious runtime behavior. 801 802 803.. exception:: FutureWarning 804 805 Base class for warnings about deprecated features when those warnings are 806 intended for end users of applications that are written in Python. 807 808 809.. exception:: ImportWarning 810 811 Base class for warnings about probable mistakes in module imports. 812 813 Ignored by the default warning filters. Enabling the :ref:`Python 814 Development Mode <devmode>` shows this warning. 815 816 817.. exception:: UnicodeWarning 818 819 Base class for warnings related to Unicode. 820 821 822.. exception:: EncodingWarning 823 824 Base class for warnings related to encodings. 825 826 See :ref:`io-encoding-warning` for details. 827 828 .. versionadded:: 3.10 829 830 831.. exception:: BytesWarning 832 833 Base class for warnings related to :class:`bytes` and :class:`bytearray`. 834 835 836.. exception:: ResourceWarning 837 838 Base class for warnings related to resource usage. 839 840 Ignored by the default warning filters. Enabling the :ref:`Python 841 Development Mode <devmode>` shows this warning. 842 843 .. versionadded:: 3.2 844 845 846 847Exception hierarchy 848------------------- 849 850The class hierarchy for built-in exceptions is: 851 852.. literalinclude:: ../../Lib/test/exception_hierarchy.txt 853