17db96d56Sopenharmony_ci.. _bltin-exceptions: 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ciBuilt-in Exceptions 47db96d56Sopenharmony_ci=================== 57db96d56Sopenharmony_ci 67db96d56Sopenharmony_ci.. index:: 77db96d56Sopenharmony_ci pair: statement; try 87db96d56Sopenharmony_ci pair: statement; except 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ciIn Python, all exceptions must be instances of a class that derives from 117db96d56Sopenharmony_ci:class:`BaseException`. In a :keyword:`try` statement with an :keyword:`except` 127db96d56Sopenharmony_ciclause that mentions a particular class, that clause also handles any exception 137db96d56Sopenharmony_ciclasses derived from that class (but not exception classes from which *it* is 147db96d56Sopenharmony_ciderived). Two exception classes that are not related via subclassing are never 157db96d56Sopenharmony_ciequivalent, even if they have the same name. 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ci.. index:: pair: statement; raise 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_ciThe built-in exceptions listed below can be generated by the interpreter or 207db96d56Sopenharmony_cibuilt-in functions. Except where mentioned, they have an "associated value" 217db96d56Sopenharmony_ciindicating the detailed cause of the error. This may be a string or a tuple of 227db96d56Sopenharmony_ciseveral items of information (e.g., an error code and a string explaining the 237db96d56Sopenharmony_cicode). The associated value is usually passed as arguments to the exception 247db96d56Sopenharmony_ciclass's constructor. 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ciUser code can raise built-in exceptions. This can be used to test an exception 277db96d56Sopenharmony_cihandler or to report an error condition "just like" the situation in which the 287db96d56Sopenharmony_ciinterpreter raises the same exception; but beware that there is nothing to 297db96d56Sopenharmony_ciprevent user code from raising an inappropriate error. 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ciThe built-in exception classes can be subclassed to define new exceptions; 327db96d56Sopenharmony_ciprogrammers are encouraged to derive new exceptions from the :exc:`Exception` 337db96d56Sopenharmony_ciclass or one of its subclasses, and not from :exc:`BaseException`. More 347db96d56Sopenharmony_ciinformation on defining exceptions is available in the Python Tutorial under 357db96d56Sopenharmony_ci:ref:`tut-userexceptions`. 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ciException context 397db96d56Sopenharmony_ci----------------- 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ciWhen raising a new exception while another exception 427db96d56Sopenharmony_ciis already being handled, the new exception's 437db96d56Sopenharmony_ci:attr:`__context__` attribute is automatically set to the handled 447db96d56Sopenharmony_ciexception. An exception may be handled when an :keyword:`except` or 457db96d56Sopenharmony_ci:keyword:`finally` clause, or a :keyword:`with` statement, is used. 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ciThis implicit exception context can be 487db96d56Sopenharmony_cisupplemented with an explicit cause by using :keyword:`!from` with 497db96d56Sopenharmony_ci:keyword:`raise`:: 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_ci raise new_exc from original_exc 527db96d56Sopenharmony_ci 537db96d56Sopenharmony_ciThe expression following :keyword:`from<raise>` must be an exception or ``None``. It 547db96d56Sopenharmony_ciwill be set as :attr:`__cause__` on the raised exception. Setting 557db96d56Sopenharmony_ci:attr:`__cause__` also implicitly sets the :attr:`__suppress_context__` 567db96d56Sopenharmony_ciattribute to ``True``, so that using ``raise new_exc from None`` 577db96d56Sopenharmony_cieffectively replaces the old exception with the new one for display 587db96d56Sopenharmony_cipurposes (e.g. converting :exc:`KeyError` to :exc:`AttributeError`), while 597db96d56Sopenharmony_cileaving the old exception available in :attr:`__context__` for introspection 607db96d56Sopenharmony_ciwhen debugging. 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ciThe default traceback display code shows these chained exceptions in 637db96d56Sopenharmony_ciaddition to the traceback for the exception itself. An explicitly chained 647db96d56Sopenharmony_ciexception in :attr:`__cause__` is always shown when present. An implicitly 657db96d56Sopenharmony_cichained exception in :attr:`__context__` is shown only if :attr:`__cause__` 667db96d56Sopenharmony_ciis :const:`None` and :attr:`__suppress_context__` is false. 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_ciIn either case, the exception itself is always shown after any chained 697db96d56Sopenharmony_ciexceptions so that the final line of the traceback always shows the last 707db96d56Sopenharmony_ciexception that was raised. 717db96d56Sopenharmony_ci 727db96d56Sopenharmony_ci 737db96d56Sopenharmony_ciInheriting from built-in exceptions 747db96d56Sopenharmony_ci----------------------------------- 757db96d56Sopenharmony_ci 767db96d56Sopenharmony_ciUser code can create subclasses that inherit from an exception type. 777db96d56Sopenharmony_ciIt's recommended to only subclass one exception type at a time to avoid 787db96d56Sopenharmony_ciany possible conflicts between how the bases handle the ``args`` 797db96d56Sopenharmony_ciattribute, as well as due to possible memory layout incompatibilities. 807db96d56Sopenharmony_ci 817db96d56Sopenharmony_ci.. impl-detail:: 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_ci Most built-in exceptions are implemented in C for efficiency, see: 847db96d56Sopenharmony_ci :source:`Objects/exceptions.c`. Some have custom memory layouts 857db96d56Sopenharmony_ci which makes it impossible to create a subclass that inherits from 867db96d56Sopenharmony_ci multiple exception types. The memory layout of a type is an implementation 877db96d56Sopenharmony_ci detail and might change between Python versions, leading to new 887db96d56Sopenharmony_ci conflicts in the future. Therefore, it's recommended to avoid 897db96d56Sopenharmony_ci subclassing multiple exception types altogether. 907db96d56Sopenharmony_ci 917db96d56Sopenharmony_ci 927db96d56Sopenharmony_ciBase classes 937db96d56Sopenharmony_ci------------ 947db96d56Sopenharmony_ci 957db96d56Sopenharmony_ciThe following exceptions are used mostly as base classes for other exceptions. 967db96d56Sopenharmony_ci 977db96d56Sopenharmony_ci.. exception:: BaseException 987db96d56Sopenharmony_ci 997db96d56Sopenharmony_ci The base class for all built-in exceptions. It is not meant to be directly 1007db96d56Sopenharmony_ci inherited by user-defined classes (for that, use :exc:`Exception`). If 1017db96d56Sopenharmony_ci :func:`str` is called on an instance of this class, the representation of 1027db96d56Sopenharmony_ci the argument(s) to the instance are returned, or the empty string when 1037db96d56Sopenharmony_ci there were no arguments. 1047db96d56Sopenharmony_ci 1057db96d56Sopenharmony_ci .. attribute:: args 1067db96d56Sopenharmony_ci 1077db96d56Sopenharmony_ci The tuple of arguments given to the exception constructor. Some built-in 1087db96d56Sopenharmony_ci exceptions (like :exc:`OSError`) expect a certain number of arguments and 1097db96d56Sopenharmony_ci assign a special meaning to the elements of this tuple, while others are 1107db96d56Sopenharmony_ci usually called only with a single string giving an error message. 1117db96d56Sopenharmony_ci 1127db96d56Sopenharmony_ci .. method:: with_traceback(tb) 1137db96d56Sopenharmony_ci 1147db96d56Sopenharmony_ci This method sets *tb* as the new traceback for the exception and returns 1157db96d56Sopenharmony_ci the exception object. It was more commonly used before the exception 1167db96d56Sopenharmony_ci chaining features of :pep:`3134` became available. The following example 1177db96d56Sopenharmony_ci shows how we can convert an instance of ``SomeException`` into an 1187db96d56Sopenharmony_ci instance of ``OtherException`` while preserving the traceback. Once 1197db96d56Sopenharmony_ci raised, the current frame is pushed onto the traceback of the 1207db96d56Sopenharmony_ci ``OtherException``, as would have happened to the traceback of the 1217db96d56Sopenharmony_ci original ``SomeException`` had we allowed it to propagate to the caller. :: 1227db96d56Sopenharmony_ci 1237db96d56Sopenharmony_ci try: 1247db96d56Sopenharmony_ci ... 1257db96d56Sopenharmony_ci except SomeException: 1267db96d56Sopenharmony_ci tb = sys.exception().__traceback__ 1277db96d56Sopenharmony_ci raise OtherException(...).with_traceback(tb) 1287db96d56Sopenharmony_ci 1297db96d56Sopenharmony_ci .. method:: add_note(note) 1307db96d56Sopenharmony_ci 1317db96d56Sopenharmony_ci Add the string ``note`` to the exception's notes which appear in the standard 1327db96d56Sopenharmony_ci traceback after the exception string. A :exc:`TypeError` is raised if ``note`` 1337db96d56Sopenharmony_ci is not a string. 1347db96d56Sopenharmony_ci 1357db96d56Sopenharmony_ci .. versionadded:: 3.11 1367db96d56Sopenharmony_ci 1377db96d56Sopenharmony_ci .. attribute:: __notes__ 1387db96d56Sopenharmony_ci 1397db96d56Sopenharmony_ci A list of the notes of this exception, which were added with :meth:`add_note`. 1407db96d56Sopenharmony_ci This attribute is created when :meth:`add_note` is called. 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ci .. versionadded:: 3.11 1437db96d56Sopenharmony_ci 1447db96d56Sopenharmony_ci 1457db96d56Sopenharmony_ci.. exception:: Exception 1467db96d56Sopenharmony_ci 1477db96d56Sopenharmony_ci All built-in, non-system-exiting exceptions are derived from this class. All 1487db96d56Sopenharmony_ci user-defined exceptions should also be derived from this class. 1497db96d56Sopenharmony_ci 1507db96d56Sopenharmony_ci 1517db96d56Sopenharmony_ci.. exception:: ArithmeticError 1527db96d56Sopenharmony_ci 1537db96d56Sopenharmony_ci The base class for those built-in exceptions that are raised for various 1547db96d56Sopenharmony_ci arithmetic errors: :exc:`OverflowError`, :exc:`ZeroDivisionError`, 1557db96d56Sopenharmony_ci :exc:`FloatingPointError`. 1567db96d56Sopenharmony_ci 1577db96d56Sopenharmony_ci 1587db96d56Sopenharmony_ci.. exception:: BufferError 1597db96d56Sopenharmony_ci 1607db96d56Sopenharmony_ci Raised when a :ref:`buffer <bufferobjects>` related operation cannot be 1617db96d56Sopenharmony_ci performed. 1627db96d56Sopenharmony_ci 1637db96d56Sopenharmony_ci 1647db96d56Sopenharmony_ci.. exception:: LookupError 1657db96d56Sopenharmony_ci 1667db96d56Sopenharmony_ci The base class for the exceptions that are raised when a key or index used on 1677db96d56Sopenharmony_ci a mapping or sequence is invalid: :exc:`IndexError`, :exc:`KeyError`. This 1687db96d56Sopenharmony_ci can be raised directly by :func:`codecs.lookup`. 1697db96d56Sopenharmony_ci 1707db96d56Sopenharmony_ci 1717db96d56Sopenharmony_ciConcrete exceptions 1727db96d56Sopenharmony_ci------------------- 1737db96d56Sopenharmony_ci 1747db96d56Sopenharmony_ciThe following exceptions are the exceptions that are usually raised. 1757db96d56Sopenharmony_ci 1767db96d56Sopenharmony_ci.. exception:: AssertionError 1777db96d56Sopenharmony_ci 1787db96d56Sopenharmony_ci .. index:: pair: statement; assert 1797db96d56Sopenharmony_ci 1807db96d56Sopenharmony_ci Raised when an :keyword:`assert` statement fails. 1817db96d56Sopenharmony_ci 1827db96d56Sopenharmony_ci 1837db96d56Sopenharmony_ci.. exception:: AttributeError 1847db96d56Sopenharmony_ci 1857db96d56Sopenharmony_ci Raised when an attribute reference (see :ref:`attribute-references`) or 1867db96d56Sopenharmony_ci assignment fails. (When an object does not support attribute references or 1877db96d56Sopenharmony_ci attribute assignments at all, :exc:`TypeError` is raised.) 1887db96d56Sopenharmony_ci 1897db96d56Sopenharmony_ci The :attr:`name` and :attr:`obj` attributes can be set using keyword-only 1907db96d56Sopenharmony_ci arguments to the constructor. When set they represent the name of the attribute 1917db96d56Sopenharmony_ci that was attempted to be accessed and the object that was accessed for said 1927db96d56Sopenharmony_ci attribute, respectively. 1937db96d56Sopenharmony_ci 1947db96d56Sopenharmony_ci .. versionchanged:: 3.10 1957db96d56Sopenharmony_ci Added the :attr:`name` and :attr:`obj` attributes. 1967db96d56Sopenharmony_ci 1977db96d56Sopenharmony_ci.. exception:: EOFError 1987db96d56Sopenharmony_ci 1997db96d56Sopenharmony_ci Raised when the :func:`input` function hits an end-of-file condition (EOF) 2007db96d56Sopenharmony_ci without reading any data. (N.B.: the :meth:`io.IOBase.read` and 2017db96d56Sopenharmony_ci :meth:`io.IOBase.readline` methods return an empty string when they hit EOF.) 2027db96d56Sopenharmony_ci 2037db96d56Sopenharmony_ci 2047db96d56Sopenharmony_ci.. exception:: FloatingPointError 2057db96d56Sopenharmony_ci 2067db96d56Sopenharmony_ci Not currently used. 2077db96d56Sopenharmony_ci 2087db96d56Sopenharmony_ci 2097db96d56Sopenharmony_ci.. exception:: GeneratorExit 2107db96d56Sopenharmony_ci 2117db96d56Sopenharmony_ci Raised when a :term:`generator` or :term:`coroutine` is closed; 2127db96d56Sopenharmony_ci see :meth:`generator.close` and :meth:`coroutine.close`. It 2137db96d56Sopenharmony_ci directly inherits from :exc:`BaseException` instead of :exc:`Exception` since 2147db96d56Sopenharmony_ci it is technically not an error. 2157db96d56Sopenharmony_ci 2167db96d56Sopenharmony_ci 2177db96d56Sopenharmony_ci.. exception:: ImportError 2187db96d56Sopenharmony_ci 2197db96d56Sopenharmony_ci Raised when the :keyword:`import` statement has troubles trying to 2207db96d56Sopenharmony_ci load a module. Also raised when the "from list" in ``from ... import`` 2217db96d56Sopenharmony_ci has a name that cannot be found. 2227db96d56Sopenharmony_ci 2237db96d56Sopenharmony_ci The :attr:`name` and :attr:`path` attributes can be set using keyword-only 2247db96d56Sopenharmony_ci arguments to the constructor. When set they represent the name of the module 2257db96d56Sopenharmony_ci that was attempted to be imported and the path to any file which triggered 2267db96d56Sopenharmony_ci the exception, respectively. 2277db96d56Sopenharmony_ci 2287db96d56Sopenharmony_ci .. versionchanged:: 3.3 2297db96d56Sopenharmony_ci Added the :attr:`name` and :attr:`path` attributes. 2307db96d56Sopenharmony_ci 2317db96d56Sopenharmony_ci.. exception:: ModuleNotFoundError 2327db96d56Sopenharmony_ci 2337db96d56Sopenharmony_ci A subclass of :exc:`ImportError` which is raised by :keyword:`import` 2347db96d56Sopenharmony_ci when a module could not be located. It is also raised when ``None`` 2357db96d56Sopenharmony_ci is found in :data:`sys.modules`. 2367db96d56Sopenharmony_ci 2377db96d56Sopenharmony_ci .. versionadded:: 3.6 2387db96d56Sopenharmony_ci 2397db96d56Sopenharmony_ci 2407db96d56Sopenharmony_ci.. exception:: IndexError 2417db96d56Sopenharmony_ci 2427db96d56Sopenharmony_ci Raised when a sequence subscript is out of range. (Slice indices are 2437db96d56Sopenharmony_ci silently truncated to fall in the allowed range; if an index is not an 2447db96d56Sopenharmony_ci integer, :exc:`TypeError` is raised.) 2457db96d56Sopenharmony_ci 2467db96d56Sopenharmony_ci .. XXX xref to sequences 2477db96d56Sopenharmony_ci 2487db96d56Sopenharmony_ci 2497db96d56Sopenharmony_ci.. exception:: KeyError 2507db96d56Sopenharmony_ci 2517db96d56Sopenharmony_ci Raised when a mapping (dictionary) key is not found in the set of existing keys. 2527db96d56Sopenharmony_ci 2537db96d56Sopenharmony_ci .. XXX xref to mapping objects? 2547db96d56Sopenharmony_ci 2557db96d56Sopenharmony_ci 2567db96d56Sopenharmony_ci.. exception:: KeyboardInterrupt 2577db96d56Sopenharmony_ci 2587db96d56Sopenharmony_ci Raised when the user hits the interrupt key (normally :kbd:`Control-C` or 2597db96d56Sopenharmony_ci :kbd:`Delete`). During execution, a check for interrupts is made 2607db96d56Sopenharmony_ci regularly. The exception inherits from :exc:`BaseException` so as to not be 2617db96d56Sopenharmony_ci accidentally caught by code that catches :exc:`Exception` and thus prevent 2627db96d56Sopenharmony_ci the interpreter from exiting. 2637db96d56Sopenharmony_ci 2647db96d56Sopenharmony_ci .. note:: 2657db96d56Sopenharmony_ci 2667db96d56Sopenharmony_ci Catching a :exc:`KeyboardInterrupt` requires special consideration. 2677db96d56Sopenharmony_ci Because it can be raised at unpredictable points, it may, in some 2687db96d56Sopenharmony_ci circumstances, leave the running program in an inconsistent state. It is 2697db96d56Sopenharmony_ci generally best to allow :exc:`KeyboardInterrupt` to end the program as 2707db96d56Sopenharmony_ci quickly as possible or avoid raising it entirely. (See 2717db96d56Sopenharmony_ci :ref:`handlers-and-exceptions`.) 2727db96d56Sopenharmony_ci 2737db96d56Sopenharmony_ci 2747db96d56Sopenharmony_ci.. exception:: MemoryError 2757db96d56Sopenharmony_ci 2767db96d56Sopenharmony_ci Raised when an operation runs out of memory but the situation may still be 2777db96d56Sopenharmony_ci rescued (by deleting some objects). The associated value is a string indicating 2787db96d56Sopenharmony_ci what kind of (internal) operation ran out of memory. Note that because of the 2797db96d56Sopenharmony_ci underlying memory management architecture (C's :c:func:`malloc` function), the 2807db96d56Sopenharmony_ci interpreter may not always be able to completely recover from this situation; it 2817db96d56Sopenharmony_ci nevertheless raises an exception so that a stack traceback can be printed, in 2827db96d56Sopenharmony_ci case a run-away program was the cause. 2837db96d56Sopenharmony_ci 2847db96d56Sopenharmony_ci 2857db96d56Sopenharmony_ci.. exception:: NameError 2867db96d56Sopenharmony_ci 2877db96d56Sopenharmony_ci Raised when a local or global name is not found. This applies only to 2887db96d56Sopenharmony_ci unqualified names. The associated value is an error message that includes the 2897db96d56Sopenharmony_ci name that could not be found. 2907db96d56Sopenharmony_ci 2917db96d56Sopenharmony_ci The :attr:`name` attribute can be set using a keyword-only argument to the 2927db96d56Sopenharmony_ci constructor. When set it represent the name of the variable that was attempted 2937db96d56Sopenharmony_ci to be accessed. 2947db96d56Sopenharmony_ci 2957db96d56Sopenharmony_ci .. versionchanged:: 3.10 2967db96d56Sopenharmony_ci Added the :attr:`name` attribute. 2977db96d56Sopenharmony_ci 2987db96d56Sopenharmony_ci 2997db96d56Sopenharmony_ci.. exception:: NotImplementedError 3007db96d56Sopenharmony_ci 3017db96d56Sopenharmony_ci This exception is derived from :exc:`RuntimeError`. In user defined base 3027db96d56Sopenharmony_ci classes, abstract methods should raise this exception when they require 3037db96d56Sopenharmony_ci derived classes to override the method, or while the class is being 3047db96d56Sopenharmony_ci developed to indicate that the real implementation still needs to be added. 3057db96d56Sopenharmony_ci 3067db96d56Sopenharmony_ci .. note:: 3077db96d56Sopenharmony_ci 3087db96d56Sopenharmony_ci It should not be used to indicate that an operator or method is not 3097db96d56Sopenharmony_ci meant to be supported at all -- in that case either leave the operator / 3107db96d56Sopenharmony_ci method undefined or, if a subclass, set it to :data:`None`. 3117db96d56Sopenharmony_ci 3127db96d56Sopenharmony_ci .. note:: 3137db96d56Sopenharmony_ci 3147db96d56Sopenharmony_ci ``NotImplementedError`` and ``NotImplemented`` are not interchangeable, 3157db96d56Sopenharmony_ci even though they have similar names and purposes. See 3167db96d56Sopenharmony_ci :data:`NotImplemented` for details on when to use it. 3177db96d56Sopenharmony_ci 3187db96d56Sopenharmony_ci.. exception:: OSError([arg]) 3197db96d56Sopenharmony_ci OSError(errno, strerror[, filename[, winerror[, filename2]]]) 3207db96d56Sopenharmony_ci 3217db96d56Sopenharmony_ci .. index:: pair: module; errno 3227db96d56Sopenharmony_ci 3237db96d56Sopenharmony_ci This exception is raised when a system function returns a system-related 3247db96d56Sopenharmony_ci error, including I/O failures such as "file not found" or "disk full" 3257db96d56Sopenharmony_ci (not for illegal argument types or other incidental errors). 3267db96d56Sopenharmony_ci 3277db96d56Sopenharmony_ci The second form of the constructor sets the corresponding attributes, 3287db96d56Sopenharmony_ci described below. The attributes default to :const:`None` if not 3297db96d56Sopenharmony_ci specified. For backwards compatibility, if three arguments are passed, 3307db96d56Sopenharmony_ci the :attr:`~BaseException.args` attribute contains only a 2-tuple 3317db96d56Sopenharmony_ci of the first two constructor arguments. 3327db96d56Sopenharmony_ci 3337db96d56Sopenharmony_ci The constructor often actually returns a subclass of :exc:`OSError`, as 3347db96d56Sopenharmony_ci described in `OS exceptions`_ below. The particular subclass depends on 3357db96d56Sopenharmony_ci the final :attr:`.errno` value. This behaviour only occurs when 3367db96d56Sopenharmony_ci constructing :exc:`OSError` directly or via an alias, and is not 3377db96d56Sopenharmony_ci inherited when subclassing. 3387db96d56Sopenharmony_ci 3397db96d56Sopenharmony_ci .. attribute:: errno 3407db96d56Sopenharmony_ci 3417db96d56Sopenharmony_ci A numeric error code from the C variable :c:data:`errno`. 3427db96d56Sopenharmony_ci 3437db96d56Sopenharmony_ci .. attribute:: winerror 3447db96d56Sopenharmony_ci 3457db96d56Sopenharmony_ci Under Windows, this gives you the native 3467db96d56Sopenharmony_ci Windows error code. The :attr:`.errno` attribute is then an approximate 3477db96d56Sopenharmony_ci translation, in POSIX terms, of that native error code. 3487db96d56Sopenharmony_ci 3497db96d56Sopenharmony_ci Under Windows, if the *winerror* constructor argument is an integer, 3507db96d56Sopenharmony_ci the :attr:`.errno` attribute is determined from the Windows error code, 3517db96d56Sopenharmony_ci and the *errno* argument is ignored. On other platforms, the 3527db96d56Sopenharmony_ci *winerror* argument is ignored, and the :attr:`winerror` attribute 3537db96d56Sopenharmony_ci does not exist. 3547db96d56Sopenharmony_ci 3557db96d56Sopenharmony_ci .. attribute:: strerror 3567db96d56Sopenharmony_ci 3577db96d56Sopenharmony_ci The corresponding error message, as provided by 3587db96d56Sopenharmony_ci the operating system. It is formatted by the C 3597db96d56Sopenharmony_ci functions :c:func:`perror` under POSIX, and :c:func:`FormatMessage` 3607db96d56Sopenharmony_ci under Windows. 3617db96d56Sopenharmony_ci 3627db96d56Sopenharmony_ci .. attribute:: filename 3637db96d56Sopenharmony_ci filename2 3647db96d56Sopenharmony_ci 3657db96d56Sopenharmony_ci For exceptions that involve a file system path (such as :func:`open` or 3667db96d56Sopenharmony_ci :func:`os.unlink`), :attr:`filename` is the file name passed to the function. 3677db96d56Sopenharmony_ci For functions that involve two file system paths (such as 3687db96d56Sopenharmony_ci :func:`os.rename`), :attr:`filename2` corresponds to the second 3697db96d56Sopenharmony_ci file name passed to the function. 3707db96d56Sopenharmony_ci 3717db96d56Sopenharmony_ci 3727db96d56Sopenharmony_ci .. versionchanged:: 3.3 3737db96d56Sopenharmony_ci :exc:`EnvironmentError`, :exc:`IOError`, :exc:`WindowsError`, 3747db96d56Sopenharmony_ci :exc:`socket.error`, :exc:`select.error` and 3757db96d56Sopenharmony_ci :exc:`mmap.error` have been merged into :exc:`OSError`, and the 3767db96d56Sopenharmony_ci constructor may return a subclass. 3777db96d56Sopenharmony_ci 3787db96d56Sopenharmony_ci .. versionchanged:: 3.4 3797db96d56Sopenharmony_ci The :attr:`filename` attribute is now the original file name passed to 3807db96d56Sopenharmony_ci the function, instead of the name encoded to or decoded from the 3817db96d56Sopenharmony_ci :term:`filesystem encoding and error handler`. Also, the *filename2* 3827db96d56Sopenharmony_ci constructor argument and attribute was added. 3837db96d56Sopenharmony_ci 3847db96d56Sopenharmony_ci 3857db96d56Sopenharmony_ci.. exception:: OverflowError 3867db96d56Sopenharmony_ci 3877db96d56Sopenharmony_ci Raised when the result of an arithmetic operation is too large to be 3887db96d56Sopenharmony_ci represented. This cannot occur for integers (which would rather raise 3897db96d56Sopenharmony_ci :exc:`MemoryError` than give up). However, for historical reasons, 3907db96d56Sopenharmony_ci OverflowError is sometimes raised for integers that are outside a required 3917db96d56Sopenharmony_ci range. Because of the lack of standardization of floating point exception 3927db96d56Sopenharmony_ci handling in C, most floating point operations are not checked. 3937db96d56Sopenharmony_ci 3947db96d56Sopenharmony_ci 3957db96d56Sopenharmony_ci.. exception:: RecursionError 3967db96d56Sopenharmony_ci 3977db96d56Sopenharmony_ci This exception is derived from :exc:`RuntimeError`. It is raised when the 3987db96d56Sopenharmony_ci interpreter detects that the maximum recursion depth (see 3997db96d56Sopenharmony_ci :func:`sys.getrecursionlimit`) is exceeded. 4007db96d56Sopenharmony_ci 4017db96d56Sopenharmony_ci .. versionadded:: 3.5 4027db96d56Sopenharmony_ci Previously, a plain :exc:`RuntimeError` was raised. 4037db96d56Sopenharmony_ci 4047db96d56Sopenharmony_ci 4057db96d56Sopenharmony_ci.. exception:: ReferenceError 4067db96d56Sopenharmony_ci 4077db96d56Sopenharmony_ci This exception is raised when a weak reference proxy, created by the 4087db96d56Sopenharmony_ci :func:`weakref.proxy` function, is used to access an attribute of the referent 4097db96d56Sopenharmony_ci after it has been garbage collected. For more information on weak references, 4107db96d56Sopenharmony_ci see the :mod:`weakref` module. 4117db96d56Sopenharmony_ci 4127db96d56Sopenharmony_ci 4137db96d56Sopenharmony_ci.. exception:: RuntimeError 4147db96d56Sopenharmony_ci 4157db96d56Sopenharmony_ci Raised when an error is detected that doesn't fall in any of the other 4167db96d56Sopenharmony_ci categories. The associated value is a string indicating what precisely went 4177db96d56Sopenharmony_ci wrong. 4187db96d56Sopenharmony_ci 4197db96d56Sopenharmony_ci 4207db96d56Sopenharmony_ci.. exception:: StopIteration 4217db96d56Sopenharmony_ci 4227db96d56Sopenharmony_ci Raised by built-in function :func:`next` and an :term:`iterator`\'s 4237db96d56Sopenharmony_ci :meth:`~iterator.__next__` method to signal that there are no further 4247db96d56Sopenharmony_ci items produced by the iterator. 4257db96d56Sopenharmony_ci 4267db96d56Sopenharmony_ci The exception object has a single attribute :attr:`value`, which is 4277db96d56Sopenharmony_ci given as an argument when constructing the exception, and defaults 4287db96d56Sopenharmony_ci to :const:`None`. 4297db96d56Sopenharmony_ci 4307db96d56Sopenharmony_ci When a :term:`generator` or :term:`coroutine` function 4317db96d56Sopenharmony_ci returns, a new :exc:`StopIteration` instance is 4327db96d56Sopenharmony_ci raised, and the value returned by the function is used as the 4337db96d56Sopenharmony_ci :attr:`value` parameter to the constructor of the exception. 4347db96d56Sopenharmony_ci 4357db96d56Sopenharmony_ci If a generator code directly or indirectly raises :exc:`StopIteration`, 4367db96d56Sopenharmony_ci it is converted into a :exc:`RuntimeError` (retaining the 4377db96d56Sopenharmony_ci :exc:`StopIteration` as the new exception's cause). 4387db96d56Sopenharmony_ci 4397db96d56Sopenharmony_ci .. versionchanged:: 3.3 4407db96d56Sopenharmony_ci Added ``value`` attribute and the ability for generator functions to 4417db96d56Sopenharmony_ci use it to return a value. 4427db96d56Sopenharmony_ci 4437db96d56Sopenharmony_ci .. versionchanged:: 3.5 4447db96d56Sopenharmony_ci Introduced the RuntimeError transformation via 4457db96d56Sopenharmony_ci ``from __future__ import generator_stop``, see :pep:`479`. 4467db96d56Sopenharmony_ci 4477db96d56Sopenharmony_ci .. versionchanged:: 3.7 4487db96d56Sopenharmony_ci Enable :pep:`479` for all code by default: a :exc:`StopIteration` 4497db96d56Sopenharmony_ci error raised in a generator is transformed into a :exc:`RuntimeError`. 4507db96d56Sopenharmony_ci 4517db96d56Sopenharmony_ci.. exception:: StopAsyncIteration 4527db96d56Sopenharmony_ci 4537db96d56Sopenharmony_ci Must be raised by :meth:`__anext__` method of an 4547db96d56Sopenharmony_ci :term:`asynchronous iterator` object to stop the iteration. 4557db96d56Sopenharmony_ci 4567db96d56Sopenharmony_ci .. versionadded:: 3.5 4577db96d56Sopenharmony_ci 4587db96d56Sopenharmony_ci.. exception:: SyntaxError(message, details) 4597db96d56Sopenharmony_ci 4607db96d56Sopenharmony_ci Raised when the parser encounters a syntax error. This may occur in an 4617db96d56Sopenharmony_ci :keyword:`import` statement, in a call to the built-in functions 4627db96d56Sopenharmony_ci :func:`compile`, :func:`exec`, 4637db96d56Sopenharmony_ci or :func:`eval`, or when reading the initial script or standard input 4647db96d56Sopenharmony_ci (also interactively). 4657db96d56Sopenharmony_ci 4667db96d56Sopenharmony_ci The :func:`str` of the exception instance returns only the error message. 4677db96d56Sopenharmony_ci Details is a tuple whose members are also available as separate attributes. 4687db96d56Sopenharmony_ci 4697db96d56Sopenharmony_ci .. attribute:: filename 4707db96d56Sopenharmony_ci 4717db96d56Sopenharmony_ci The name of the file the syntax error occurred in. 4727db96d56Sopenharmony_ci 4737db96d56Sopenharmony_ci .. attribute:: lineno 4747db96d56Sopenharmony_ci 4757db96d56Sopenharmony_ci Which line number in the file the error occurred in. This is 4767db96d56Sopenharmony_ci 1-indexed: the first line in the file has a ``lineno`` of 1. 4777db96d56Sopenharmony_ci 4787db96d56Sopenharmony_ci .. attribute:: offset 4797db96d56Sopenharmony_ci 4807db96d56Sopenharmony_ci The column in the line where the error occurred. This is 4817db96d56Sopenharmony_ci 1-indexed: the first character in the line has an ``offset`` of 1. 4827db96d56Sopenharmony_ci 4837db96d56Sopenharmony_ci .. attribute:: text 4847db96d56Sopenharmony_ci 4857db96d56Sopenharmony_ci The source code text involved in the error. 4867db96d56Sopenharmony_ci 4877db96d56Sopenharmony_ci .. attribute:: end_lineno 4887db96d56Sopenharmony_ci 4897db96d56Sopenharmony_ci Which line number in the file the error occurred ends in. This is 4907db96d56Sopenharmony_ci 1-indexed: the first line in the file has a ``lineno`` of 1. 4917db96d56Sopenharmony_ci 4927db96d56Sopenharmony_ci .. attribute:: end_offset 4937db96d56Sopenharmony_ci 4947db96d56Sopenharmony_ci The column in the end line where the error occurred finishes. This is 4957db96d56Sopenharmony_ci 1-indexed: the first character in the line has an ``offset`` of 1. 4967db96d56Sopenharmony_ci 4977db96d56Sopenharmony_ci For errors in f-string fields, the message is prefixed by "f-string: " 4987db96d56Sopenharmony_ci and the offsets are offsets in a text constructed from the replacement 4997db96d56Sopenharmony_ci expression. For example, compiling f'Bad {a b} field' results in this 5007db96d56Sopenharmony_ci args attribute: ('f-string: ...', ('', 1, 2, '(a b)\n', 1, 5)). 5017db96d56Sopenharmony_ci 5027db96d56Sopenharmony_ci .. versionchanged:: 3.10 5037db96d56Sopenharmony_ci Added the :attr:`end_lineno` and :attr:`end_offset` attributes. 5047db96d56Sopenharmony_ci 5057db96d56Sopenharmony_ci.. exception:: IndentationError 5067db96d56Sopenharmony_ci 5077db96d56Sopenharmony_ci Base class for syntax errors related to incorrect indentation. This is a 5087db96d56Sopenharmony_ci subclass of :exc:`SyntaxError`. 5097db96d56Sopenharmony_ci 5107db96d56Sopenharmony_ci 5117db96d56Sopenharmony_ci.. exception:: TabError 5127db96d56Sopenharmony_ci 5137db96d56Sopenharmony_ci Raised when indentation contains an inconsistent use of tabs and spaces. 5147db96d56Sopenharmony_ci This is a subclass of :exc:`IndentationError`. 5157db96d56Sopenharmony_ci 5167db96d56Sopenharmony_ci 5177db96d56Sopenharmony_ci.. exception:: SystemError 5187db96d56Sopenharmony_ci 5197db96d56Sopenharmony_ci Raised when the interpreter finds an internal error, but the situation does not 5207db96d56Sopenharmony_ci look so serious to cause it to abandon all hope. The associated value is a 5217db96d56Sopenharmony_ci string indicating what went wrong (in low-level terms). 5227db96d56Sopenharmony_ci 5237db96d56Sopenharmony_ci You should report this to the author or maintainer of your Python interpreter. 5247db96d56Sopenharmony_ci Be sure to report the version of the Python interpreter (``sys.version``; it is 5257db96d56Sopenharmony_ci also printed at the start of an interactive Python session), the exact error 5267db96d56Sopenharmony_ci message (the exception's associated value) and if possible the source of the 5277db96d56Sopenharmony_ci program that triggered the error. 5287db96d56Sopenharmony_ci 5297db96d56Sopenharmony_ci 5307db96d56Sopenharmony_ci.. exception:: SystemExit 5317db96d56Sopenharmony_ci 5327db96d56Sopenharmony_ci This exception is raised by the :func:`sys.exit` function. It inherits from 5337db96d56Sopenharmony_ci :exc:`BaseException` instead of :exc:`Exception` so that it is not accidentally 5347db96d56Sopenharmony_ci caught by code that catches :exc:`Exception`. This allows the exception to 5357db96d56Sopenharmony_ci properly propagate up and cause the interpreter to exit. When it is not 5367db96d56Sopenharmony_ci handled, the Python interpreter exits; no stack traceback is printed. The 5377db96d56Sopenharmony_ci constructor accepts the same optional argument passed to :func:`sys.exit`. 5387db96d56Sopenharmony_ci If the value is an integer, it specifies the system exit status (passed to 5397db96d56Sopenharmony_ci C's :c:func:`exit` function); if it is ``None``, the exit status is zero; if 5407db96d56Sopenharmony_ci it has another type (such as a string), the object's value is printed and 5417db96d56Sopenharmony_ci the exit status is one. 5427db96d56Sopenharmony_ci 5437db96d56Sopenharmony_ci A call to :func:`sys.exit` is translated into an exception so that clean-up 5447db96d56Sopenharmony_ci handlers (:keyword:`finally` clauses of :keyword:`try` statements) can be 5457db96d56Sopenharmony_ci executed, and so that a debugger can execute a script without running the risk 5467db96d56Sopenharmony_ci of losing control. The :func:`os._exit` function can be used if it is 5477db96d56Sopenharmony_ci absolutely positively necessary to exit immediately (for example, in the child 5487db96d56Sopenharmony_ci process after a call to :func:`os.fork`). 5497db96d56Sopenharmony_ci 5507db96d56Sopenharmony_ci .. attribute:: code 5517db96d56Sopenharmony_ci 5527db96d56Sopenharmony_ci The exit status or error message that is passed to the constructor. 5537db96d56Sopenharmony_ci (Defaults to ``None``.) 5547db96d56Sopenharmony_ci 5557db96d56Sopenharmony_ci 5567db96d56Sopenharmony_ci.. exception:: TypeError 5577db96d56Sopenharmony_ci 5587db96d56Sopenharmony_ci Raised when an operation or function is applied to an object of inappropriate 5597db96d56Sopenharmony_ci type. The associated value is a string giving details about the type mismatch. 5607db96d56Sopenharmony_ci 5617db96d56Sopenharmony_ci This exception may be raised by user code to indicate that an attempted 5627db96d56Sopenharmony_ci operation on an object is not supported, and is not meant to be. If an object 5637db96d56Sopenharmony_ci is meant to support a given operation but has not yet provided an 5647db96d56Sopenharmony_ci implementation, :exc:`NotImplementedError` is the proper exception to raise. 5657db96d56Sopenharmony_ci 5667db96d56Sopenharmony_ci Passing arguments of the wrong type (e.g. passing a :class:`list` when an 5677db96d56Sopenharmony_ci :class:`int` is expected) should result in a :exc:`TypeError`, but passing 5687db96d56Sopenharmony_ci arguments with the wrong value (e.g. a number outside expected boundaries) 5697db96d56Sopenharmony_ci should result in a :exc:`ValueError`. 5707db96d56Sopenharmony_ci 5717db96d56Sopenharmony_ci.. exception:: UnboundLocalError 5727db96d56Sopenharmony_ci 5737db96d56Sopenharmony_ci Raised when a reference is made to a local variable in a function or method, but 5747db96d56Sopenharmony_ci no value has been bound to that variable. This is a subclass of 5757db96d56Sopenharmony_ci :exc:`NameError`. 5767db96d56Sopenharmony_ci 5777db96d56Sopenharmony_ci 5787db96d56Sopenharmony_ci.. exception:: UnicodeError 5797db96d56Sopenharmony_ci 5807db96d56Sopenharmony_ci Raised when a Unicode-related encoding or decoding error occurs. It is a 5817db96d56Sopenharmony_ci subclass of :exc:`ValueError`. 5827db96d56Sopenharmony_ci 5837db96d56Sopenharmony_ci :exc:`UnicodeError` has attributes that describe the encoding or decoding 5847db96d56Sopenharmony_ci error. For example, ``err.object[err.start:err.end]`` gives the particular 5857db96d56Sopenharmony_ci invalid input that the codec failed on. 5867db96d56Sopenharmony_ci 5877db96d56Sopenharmony_ci .. attribute:: encoding 5887db96d56Sopenharmony_ci 5897db96d56Sopenharmony_ci The name of the encoding that raised the error. 5907db96d56Sopenharmony_ci 5917db96d56Sopenharmony_ci .. attribute:: reason 5927db96d56Sopenharmony_ci 5937db96d56Sopenharmony_ci A string describing the specific codec error. 5947db96d56Sopenharmony_ci 5957db96d56Sopenharmony_ci .. attribute:: object 5967db96d56Sopenharmony_ci 5977db96d56Sopenharmony_ci The object the codec was attempting to encode or decode. 5987db96d56Sopenharmony_ci 5997db96d56Sopenharmony_ci .. attribute:: start 6007db96d56Sopenharmony_ci 6017db96d56Sopenharmony_ci The first index of invalid data in :attr:`object`. 6027db96d56Sopenharmony_ci 6037db96d56Sopenharmony_ci .. attribute:: end 6047db96d56Sopenharmony_ci 6057db96d56Sopenharmony_ci The index after the last invalid data in :attr:`object`. 6067db96d56Sopenharmony_ci 6077db96d56Sopenharmony_ci 6087db96d56Sopenharmony_ci.. exception:: UnicodeEncodeError 6097db96d56Sopenharmony_ci 6107db96d56Sopenharmony_ci Raised when a Unicode-related error occurs during encoding. It is a subclass of 6117db96d56Sopenharmony_ci :exc:`UnicodeError`. 6127db96d56Sopenharmony_ci 6137db96d56Sopenharmony_ci 6147db96d56Sopenharmony_ci.. exception:: UnicodeDecodeError 6157db96d56Sopenharmony_ci 6167db96d56Sopenharmony_ci Raised when a Unicode-related error occurs during decoding. It is a subclass of 6177db96d56Sopenharmony_ci :exc:`UnicodeError`. 6187db96d56Sopenharmony_ci 6197db96d56Sopenharmony_ci 6207db96d56Sopenharmony_ci.. exception:: UnicodeTranslateError 6217db96d56Sopenharmony_ci 6227db96d56Sopenharmony_ci Raised when a Unicode-related error occurs during translating. It is a subclass 6237db96d56Sopenharmony_ci of :exc:`UnicodeError`. 6247db96d56Sopenharmony_ci 6257db96d56Sopenharmony_ci 6267db96d56Sopenharmony_ci.. exception:: ValueError 6277db96d56Sopenharmony_ci 6287db96d56Sopenharmony_ci Raised when an operation or function receives an argument that has the 6297db96d56Sopenharmony_ci right type but an inappropriate value, and the situation is not described by a 6307db96d56Sopenharmony_ci more precise exception such as :exc:`IndexError`. 6317db96d56Sopenharmony_ci 6327db96d56Sopenharmony_ci 6337db96d56Sopenharmony_ci.. exception:: ZeroDivisionError 6347db96d56Sopenharmony_ci 6357db96d56Sopenharmony_ci Raised when the second argument of a division or modulo operation is zero. The 6367db96d56Sopenharmony_ci associated value is a string indicating the type of the operands and the 6377db96d56Sopenharmony_ci operation. 6387db96d56Sopenharmony_ci 6397db96d56Sopenharmony_ci 6407db96d56Sopenharmony_ciThe following exceptions are kept for compatibility with previous versions; 6417db96d56Sopenharmony_cistarting from Python 3.3, they are aliases of :exc:`OSError`. 6427db96d56Sopenharmony_ci 6437db96d56Sopenharmony_ci.. exception:: EnvironmentError 6447db96d56Sopenharmony_ci 6457db96d56Sopenharmony_ci.. exception:: IOError 6467db96d56Sopenharmony_ci 6477db96d56Sopenharmony_ci.. exception:: WindowsError 6487db96d56Sopenharmony_ci 6497db96d56Sopenharmony_ci Only available on Windows. 6507db96d56Sopenharmony_ci 6517db96d56Sopenharmony_ci 6527db96d56Sopenharmony_ciOS exceptions 6537db96d56Sopenharmony_ci^^^^^^^^^^^^^ 6547db96d56Sopenharmony_ci 6557db96d56Sopenharmony_ciThe following exceptions are subclasses of :exc:`OSError`, they get raised 6567db96d56Sopenharmony_cidepending on the system error code. 6577db96d56Sopenharmony_ci 6587db96d56Sopenharmony_ci.. exception:: BlockingIOError 6597db96d56Sopenharmony_ci 6607db96d56Sopenharmony_ci Raised when an operation would block on an object (e.g. socket) set 6617db96d56Sopenharmony_ci for non-blocking operation. 6627db96d56Sopenharmony_ci Corresponds to :c:data:`errno` :py:data:`~errno.EAGAIN`, :py:data:`~errno.EALREADY`, 6637db96d56Sopenharmony_ci :py:data:`~errno.EWOULDBLOCK` and :py:data:`~errno.EINPROGRESS`. 6647db96d56Sopenharmony_ci 6657db96d56Sopenharmony_ci In addition to those of :exc:`OSError`, :exc:`BlockingIOError` can have 6667db96d56Sopenharmony_ci one more attribute: 6677db96d56Sopenharmony_ci 6687db96d56Sopenharmony_ci .. attribute:: characters_written 6697db96d56Sopenharmony_ci 6707db96d56Sopenharmony_ci An integer containing the number of characters written to the stream 6717db96d56Sopenharmony_ci before it blocked. This attribute is available when using the 6727db96d56Sopenharmony_ci buffered I/O classes from the :mod:`io` module. 6737db96d56Sopenharmony_ci 6747db96d56Sopenharmony_ci.. exception:: ChildProcessError 6757db96d56Sopenharmony_ci 6767db96d56Sopenharmony_ci Raised when an operation on a child process failed. 6777db96d56Sopenharmony_ci Corresponds to :c:data:`errno` :py:data:`~errno.ECHILD`. 6787db96d56Sopenharmony_ci 6797db96d56Sopenharmony_ci.. exception:: ConnectionError 6807db96d56Sopenharmony_ci 6817db96d56Sopenharmony_ci A base class for connection-related issues. 6827db96d56Sopenharmony_ci 6837db96d56Sopenharmony_ci Subclasses are :exc:`BrokenPipeError`, :exc:`ConnectionAbortedError`, 6847db96d56Sopenharmony_ci :exc:`ConnectionRefusedError` and :exc:`ConnectionResetError`. 6857db96d56Sopenharmony_ci 6867db96d56Sopenharmony_ci.. exception:: BrokenPipeError 6877db96d56Sopenharmony_ci 6887db96d56Sopenharmony_ci A subclass of :exc:`ConnectionError`, raised when trying to write on a 6897db96d56Sopenharmony_ci pipe while the other end has been closed, or trying to write on a socket 6907db96d56Sopenharmony_ci which has been shutdown for writing. 6917db96d56Sopenharmony_ci Corresponds to :c:data:`errno` :py:data:`~errno.EPIPE` and :py:data:`~errno.ESHUTDOWN`. 6927db96d56Sopenharmony_ci 6937db96d56Sopenharmony_ci.. exception:: ConnectionAbortedError 6947db96d56Sopenharmony_ci 6957db96d56Sopenharmony_ci A subclass of :exc:`ConnectionError`, raised when a connection attempt 6967db96d56Sopenharmony_ci is aborted by the peer. 6977db96d56Sopenharmony_ci Corresponds to :c:data:`errno` :py:data:`~errno.ECONNABORTED`. 6987db96d56Sopenharmony_ci 6997db96d56Sopenharmony_ci.. exception:: ConnectionRefusedError 7007db96d56Sopenharmony_ci 7017db96d56Sopenharmony_ci A subclass of :exc:`ConnectionError`, raised when a connection attempt 7027db96d56Sopenharmony_ci is refused by the peer. 7037db96d56Sopenharmony_ci Corresponds to :c:data:`errno` :py:data:`~errno.ECONNREFUSED`. 7047db96d56Sopenharmony_ci 7057db96d56Sopenharmony_ci.. exception:: ConnectionResetError 7067db96d56Sopenharmony_ci 7077db96d56Sopenharmony_ci A subclass of :exc:`ConnectionError`, raised when a connection is 7087db96d56Sopenharmony_ci reset by the peer. 7097db96d56Sopenharmony_ci Corresponds to :c:data:`errno` :py:data:`~errno.ECONNRESET`. 7107db96d56Sopenharmony_ci 7117db96d56Sopenharmony_ci.. exception:: FileExistsError 7127db96d56Sopenharmony_ci 7137db96d56Sopenharmony_ci Raised when trying to create a file or directory which already exists. 7147db96d56Sopenharmony_ci Corresponds to :c:data:`errno` :py:data:`~errno.EEXIST`. 7157db96d56Sopenharmony_ci 7167db96d56Sopenharmony_ci.. exception:: FileNotFoundError 7177db96d56Sopenharmony_ci 7187db96d56Sopenharmony_ci Raised when a file or directory is requested but doesn't exist. 7197db96d56Sopenharmony_ci Corresponds to :c:data:`errno` :py:data:`~errno.ENOENT`. 7207db96d56Sopenharmony_ci 7217db96d56Sopenharmony_ci.. exception:: InterruptedError 7227db96d56Sopenharmony_ci 7237db96d56Sopenharmony_ci Raised when a system call is interrupted by an incoming signal. 7247db96d56Sopenharmony_ci Corresponds to :c:data:`errno` :py:data:`~errno.EINTR`. 7257db96d56Sopenharmony_ci 7267db96d56Sopenharmony_ci .. versionchanged:: 3.5 7277db96d56Sopenharmony_ci Python now retries system calls when a syscall is interrupted by a 7287db96d56Sopenharmony_ci signal, except if the signal handler raises an exception (see :pep:`475` 7297db96d56Sopenharmony_ci for the rationale), instead of raising :exc:`InterruptedError`. 7307db96d56Sopenharmony_ci 7317db96d56Sopenharmony_ci.. exception:: IsADirectoryError 7327db96d56Sopenharmony_ci 7337db96d56Sopenharmony_ci Raised when a file operation (such as :func:`os.remove`) is requested 7347db96d56Sopenharmony_ci on a directory. 7357db96d56Sopenharmony_ci Corresponds to :c:data:`errno` :py:data:`~errno.EISDIR`. 7367db96d56Sopenharmony_ci 7377db96d56Sopenharmony_ci.. exception:: NotADirectoryError 7387db96d56Sopenharmony_ci 7397db96d56Sopenharmony_ci Raised when a directory operation (such as :func:`os.listdir`) is requested on 7407db96d56Sopenharmony_ci something which is not a directory. On most POSIX platforms, it may also be 7417db96d56Sopenharmony_ci raised if an operation attempts to open or traverse a non-directory file as if 7427db96d56Sopenharmony_ci it were a directory. 7437db96d56Sopenharmony_ci Corresponds to :c:data:`errno` :py:data:`~errno.ENOTDIR`. 7447db96d56Sopenharmony_ci 7457db96d56Sopenharmony_ci.. exception:: PermissionError 7467db96d56Sopenharmony_ci 7477db96d56Sopenharmony_ci Raised when trying to run an operation without the adequate access 7487db96d56Sopenharmony_ci rights - for example filesystem permissions. 7497db96d56Sopenharmony_ci Corresponds to :c:data:`errno` :py:data:`~errno.EACCES`, 7507db96d56Sopenharmony_ci :py:data:`~errno.EPERM`, and :py:data:`~errno.ENOTCAPABLE`. 7517db96d56Sopenharmony_ci 7527db96d56Sopenharmony_ci .. versionchanged:: 3.11.1 7537db96d56Sopenharmony_ci WASI's :py:data:`~errno.ENOTCAPABLE` is now mapped to 7547db96d56Sopenharmony_ci :exc:`PermissionError`. 7557db96d56Sopenharmony_ci 7567db96d56Sopenharmony_ci.. exception:: ProcessLookupError 7577db96d56Sopenharmony_ci 7587db96d56Sopenharmony_ci Raised when a given process doesn't exist. 7597db96d56Sopenharmony_ci Corresponds to :c:data:`errno` :py:data:`~errno.ESRCH`. 7607db96d56Sopenharmony_ci 7617db96d56Sopenharmony_ci.. exception:: TimeoutError 7627db96d56Sopenharmony_ci 7637db96d56Sopenharmony_ci Raised when a system function timed out at the system level. 7647db96d56Sopenharmony_ci Corresponds to :c:data:`errno` :py:data:`~errno.ETIMEDOUT`. 7657db96d56Sopenharmony_ci 7667db96d56Sopenharmony_ci.. versionadded:: 3.3 7677db96d56Sopenharmony_ci All the above :exc:`OSError` subclasses were added. 7687db96d56Sopenharmony_ci 7697db96d56Sopenharmony_ci 7707db96d56Sopenharmony_ci.. seealso:: 7717db96d56Sopenharmony_ci 7727db96d56Sopenharmony_ci :pep:`3151` - Reworking the OS and IO exception hierarchy 7737db96d56Sopenharmony_ci 7747db96d56Sopenharmony_ci 7757db96d56Sopenharmony_ci.. _warning-categories-as-exceptions: 7767db96d56Sopenharmony_ci 7777db96d56Sopenharmony_ciWarnings 7787db96d56Sopenharmony_ci-------- 7797db96d56Sopenharmony_ci 7807db96d56Sopenharmony_ciThe following exceptions are used as warning categories; see the 7817db96d56Sopenharmony_ci:ref:`warning-categories` documentation for more details. 7827db96d56Sopenharmony_ci 7837db96d56Sopenharmony_ci.. exception:: Warning 7847db96d56Sopenharmony_ci 7857db96d56Sopenharmony_ci Base class for warning categories. 7867db96d56Sopenharmony_ci 7877db96d56Sopenharmony_ci 7887db96d56Sopenharmony_ci.. exception:: UserWarning 7897db96d56Sopenharmony_ci 7907db96d56Sopenharmony_ci Base class for warnings generated by user code. 7917db96d56Sopenharmony_ci 7927db96d56Sopenharmony_ci 7937db96d56Sopenharmony_ci.. exception:: DeprecationWarning 7947db96d56Sopenharmony_ci 7957db96d56Sopenharmony_ci Base class for warnings about deprecated features when those warnings are 7967db96d56Sopenharmony_ci intended for other Python developers. 7977db96d56Sopenharmony_ci 7987db96d56Sopenharmony_ci Ignored by the default warning filters, except in the ``__main__`` module 7997db96d56Sopenharmony_ci (:pep:`565`). Enabling the :ref:`Python Development Mode <devmode>` shows 8007db96d56Sopenharmony_ci this warning. 8017db96d56Sopenharmony_ci 8027db96d56Sopenharmony_ci The deprecation policy is described in :pep:`387`. 8037db96d56Sopenharmony_ci 8047db96d56Sopenharmony_ci 8057db96d56Sopenharmony_ci.. exception:: PendingDeprecationWarning 8067db96d56Sopenharmony_ci 8077db96d56Sopenharmony_ci Base class for warnings about features which are obsolete and 8087db96d56Sopenharmony_ci expected to be deprecated in the future, but are not deprecated 8097db96d56Sopenharmony_ci at the moment. 8107db96d56Sopenharmony_ci 8117db96d56Sopenharmony_ci This class is rarely used as emitting a warning about a possible 8127db96d56Sopenharmony_ci upcoming deprecation is unusual, and :exc:`DeprecationWarning` 8137db96d56Sopenharmony_ci is preferred for already active deprecations. 8147db96d56Sopenharmony_ci 8157db96d56Sopenharmony_ci Ignored by the default warning filters. Enabling the :ref:`Python 8167db96d56Sopenharmony_ci Development Mode <devmode>` shows this warning. 8177db96d56Sopenharmony_ci 8187db96d56Sopenharmony_ci The deprecation policy is described in :pep:`387`. 8197db96d56Sopenharmony_ci 8207db96d56Sopenharmony_ci 8217db96d56Sopenharmony_ci.. exception:: SyntaxWarning 8227db96d56Sopenharmony_ci 8237db96d56Sopenharmony_ci Base class for warnings about dubious syntax. 8247db96d56Sopenharmony_ci 8257db96d56Sopenharmony_ci 8267db96d56Sopenharmony_ci.. exception:: RuntimeWarning 8277db96d56Sopenharmony_ci 8287db96d56Sopenharmony_ci Base class for warnings about dubious runtime behavior. 8297db96d56Sopenharmony_ci 8307db96d56Sopenharmony_ci 8317db96d56Sopenharmony_ci.. exception:: FutureWarning 8327db96d56Sopenharmony_ci 8337db96d56Sopenharmony_ci Base class for warnings about deprecated features when those warnings are 8347db96d56Sopenharmony_ci intended for end users of applications that are written in Python. 8357db96d56Sopenharmony_ci 8367db96d56Sopenharmony_ci 8377db96d56Sopenharmony_ci.. exception:: ImportWarning 8387db96d56Sopenharmony_ci 8397db96d56Sopenharmony_ci Base class for warnings about probable mistakes in module imports. 8407db96d56Sopenharmony_ci 8417db96d56Sopenharmony_ci Ignored by the default warning filters. Enabling the :ref:`Python 8427db96d56Sopenharmony_ci Development Mode <devmode>` shows this warning. 8437db96d56Sopenharmony_ci 8447db96d56Sopenharmony_ci 8457db96d56Sopenharmony_ci.. exception:: UnicodeWarning 8467db96d56Sopenharmony_ci 8477db96d56Sopenharmony_ci Base class for warnings related to Unicode. 8487db96d56Sopenharmony_ci 8497db96d56Sopenharmony_ci 8507db96d56Sopenharmony_ci.. exception:: EncodingWarning 8517db96d56Sopenharmony_ci 8527db96d56Sopenharmony_ci Base class for warnings related to encodings. 8537db96d56Sopenharmony_ci 8547db96d56Sopenharmony_ci See :ref:`io-encoding-warning` for details. 8557db96d56Sopenharmony_ci 8567db96d56Sopenharmony_ci .. versionadded:: 3.10 8577db96d56Sopenharmony_ci 8587db96d56Sopenharmony_ci 8597db96d56Sopenharmony_ci.. exception:: BytesWarning 8607db96d56Sopenharmony_ci 8617db96d56Sopenharmony_ci Base class for warnings related to :class:`bytes` and :class:`bytearray`. 8627db96d56Sopenharmony_ci 8637db96d56Sopenharmony_ci 8647db96d56Sopenharmony_ci.. exception:: ResourceWarning 8657db96d56Sopenharmony_ci 8667db96d56Sopenharmony_ci Base class for warnings related to resource usage. 8677db96d56Sopenharmony_ci 8687db96d56Sopenharmony_ci Ignored by the default warning filters. Enabling the :ref:`Python 8697db96d56Sopenharmony_ci Development Mode <devmode>` shows this warning. 8707db96d56Sopenharmony_ci 8717db96d56Sopenharmony_ci .. versionadded:: 3.2 8727db96d56Sopenharmony_ci 8737db96d56Sopenharmony_ci 8747db96d56Sopenharmony_ciException groups 8757db96d56Sopenharmony_ci---------------- 8767db96d56Sopenharmony_ci 8777db96d56Sopenharmony_ciThe following are used when it is necessary to raise multiple unrelated 8787db96d56Sopenharmony_ciexceptions. They are part of the exception hierarchy so they can be 8797db96d56Sopenharmony_cihandled with :keyword:`except` like all other exceptions. In addition, 8807db96d56Sopenharmony_cithey are recognised by :keyword:`except*<except_star>`, which matches 8817db96d56Sopenharmony_citheir subgroups based on the types of the contained exceptions. 8827db96d56Sopenharmony_ci 8837db96d56Sopenharmony_ci.. exception:: ExceptionGroup(msg, excs) 8847db96d56Sopenharmony_ci.. exception:: BaseExceptionGroup(msg, excs) 8857db96d56Sopenharmony_ci 8867db96d56Sopenharmony_ci Both of these exception types wrap the exceptions in the sequence ``excs``. 8877db96d56Sopenharmony_ci The ``msg`` parameter must be a string. The difference between the two 8887db96d56Sopenharmony_ci classes is that :exc:`BaseExceptionGroup` extends :exc:`BaseException` and 8897db96d56Sopenharmony_ci it can wrap any exception, while :exc:`ExceptionGroup` extends :exc:`Exception` 8907db96d56Sopenharmony_ci and it can only wrap subclasses of :exc:`Exception`. This design is so that 8917db96d56Sopenharmony_ci ``except Exception`` catches an :exc:`ExceptionGroup` but not 8927db96d56Sopenharmony_ci :exc:`BaseExceptionGroup`. 8937db96d56Sopenharmony_ci 8947db96d56Sopenharmony_ci The :exc:`BaseExceptionGroup` constructor returns an :exc:`ExceptionGroup` 8957db96d56Sopenharmony_ci rather than a :exc:`BaseExceptionGroup` if all contained exceptions are 8967db96d56Sopenharmony_ci :exc:`Exception` instances, so it can be used to make the selection 8977db96d56Sopenharmony_ci automatic. The :exc:`ExceptionGroup` constructor, on the other hand, 8987db96d56Sopenharmony_ci raises a :exc:`TypeError` if any contained exception is not an 8997db96d56Sopenharmony_ci :exc:`Exception` subclass. 9007db96d56Sopenharmony_ci 9017db96d56Sopenharmony_ci .. attribute:: message 9027db96d56Sopenharmony_ci 9037db96d56Sopenharmony_ci The ``msg`` argument to the constructor. This is a read-only attribute. 9047db96d56Sopenharmony_ci 9057db96d56Sopenharmony_ci .. attribute:: exceptions 9067db96d56Sopenharmony_ci 9077db96d56Sopenharmony_ci A tuple of the exceptions in the ``excs`` sequence given to the 9087db96d56Sopenharmony_ci constructor. This is a read-only attribute. 9097db96d56Sopenharmony_ci 9107db96d56Sopenharmony_ci .. method:: subgroup(condition) 9117db96d56Sopenharmony_ci 9127db96d56Sopenharmony_ci Returns an exception group that contains only the exceptions from the 9137db96d56Sopenharmony_ci current group that match *condition*, or ``None`` if the result is empty. 9147db96d56Sopenharmony_ci 9157db96d56Sopenharmony_ci The condition can be either a function that accepts an exception and returns 9167db96d56Sopenharmony_ci true for those that should be in the subgroup, or it can be an exception type 9177db96d56Sopenharmony_ci or a tuple of exception types, which is used to check for a match using the 9187db96d56Sopenharmony_ci same check that is used in an ``except`` clause. 9197db96d56Sopenharmony_ci 9207db96d56Sopenharmony_ci The nesting structure of the current exception is preserved in the result, 9217db96d56Sopenharmony_ci as are the values of its :attr:`message`, :attr:`__traceback__`, 9227db96d56Sopenharmony_ci :attr:`__cause__`, :attr:`__context__` and :attr:`__notes__` fields. 9237db96d56Sopenharmony_ci Empty nested groups are omitted from the result. 9247db96d56Sopenharmony_ci 9257db96d56Sopenharmony_ci The condition is checked for all exceptions in the nested exception group, 9267db96d56Sopenharmony_ci including the top-level and any nested exception groups. If the condition is 9277db96d56Sopenharmony_ci true for such an exception group, it is included in the result in full. 9287db96d56Sopenharmony_ci 9297db96d56Sopenharmony_ci .. method:: split(condition) 9307db96d56Sopenharmony_ci 9317db96d56Sopenharmony_ci Like :meth:`subgroup`, but returns the pair ``(match, rest)`` where ``match`` 9327db96d56Sopenharmony_ci is ``subgroup(condition)`` and ``rest`` is the remaining non-matching 9337db96d56Sopenharmony_ci part. 9347db96d56Sopenharmony_ci 9357db96d56Sopenharmony_ci .. method:: derive(excs) 9367db96d56Sopenharmony_ci 9377db96d56Sopenharmony_ci Returns an exception group with the same :attr:`message`, but which 9387db96d56Sopenharmony_ci wraps the exceptions in ``excs``. 9397db96d56Sopenharmony_ci 9407db96d56Sopenharmony_ci This method is used by :meth:`subgroup` and :meth:`split`. A 9417db96d56Sopenharmony_ci subclass needs to override it in order to make :meth:`subgroup` 9427db96d56Sopenharmony_ci and :meth:`split` return instances of the subclass rather 9437db96d56Sopenharmony_ci than :exc:`ExceptionGroup`. 9447db96d56Sopenharmony_ci 9457db96d56Sopenharmony_ci :meth:`subgroup` and :meth:`split` copy the :attr:`__traceback__`, 9467db96d56Sopenharmony_ci :attr:`__cause__`, :attr:`__context__` and :attr:`__notes__` fields from 9477db96d56Sopenharmony_ci the original exception group to the one returned by :meth:`derive`, so 9487db96d56Sopenharmony_ci these fields do not need to be updated by :meth:`derive`. :: 9497db96d56Sopenharmony_ci 9507db96d56Sopenharmony_ci >>> class MyGroup(ExceptionGroup): 9517db96d56Sopenharmony_ci ... def derive(self, excs): 9527db96d56Sopenharmony_ci ... return MyGroup(self.message, excs) 9537db96d56Sopenharmony_ci ... 9547db96d56Sopenharmony_ci >>> e = MyGroup("eg", [ValueError(1), TypeError(2)]) 9557db96d56Sopenharmony_ci >>> e.add_note("a note") 9567db96d56Sopenharmony_ci >>> e.__context__ = Exception("context") 9577db96d56Sopenharmony_ci >>> e.__cause__ = Exception("cause") 9587db96d56Sopenharmony_ci >>> try: 9597db96d56Sopenharmony_ci ... raise e 9607db96d56Sopenharmony_ci ... except Exception as e: 9617db96d56Sopenharmony_ci ... exc = e 9627db96d56Sopenharmony_ci ... 9637db96d56Sopenharmony_ci >>> match, rest = exc.split(ValueError) 9647db96d56Sopenharmony_ci >>> exc, exc.__context__, exc.__cause__, exc.__notes__ 9657db96d56Sopenharmony_ci (MyGroup('eg', [ValueError(1), TypeError(2)]), Exception('context'), Exception('cause'), ['a note']) 9667db96d56Sopenharmony_ci >>> match, match.__context__, match.__cause__, match.__notes__ 9677db96d56Sopenharmony_ci (MyGroup('eg', [ValueError(1)]), Exception('context'), Exception('cause'), ['a note']) 9687db96d56Sopenharmony_ci >>> rest, rest.__context__, rest.__cause__, rest.__notes__ 9697db96d56Sopenharmony_ci (MyGroup('eg', [TypeError(2)]), Exception('context'), Exception('cause'), ['a note']) 9707db96d56Sopenharmony_ci >>> exc.__traceback__ is match.__traceback__ is rest.__traceback__ 9717db96d56Sopenharmony_ci True 9727db96d56Sopenharmony_ci 9737db96d56Sopenharmony_ci 9747db96d56Sopenharmony_ci Note that :exc:`BaseExceptionGroup` defines :meth:`__new__`, so 9757db96d56Sopenharmony_ci subclasses that need a different constructor signature need to 9767db96d56Sopenharmony_ci override that rather than :meth:`__init__`. For example, the following 9777db96d56Sopenharmony_ci defines an exception group subclass which accepts an exit_code and 9787db96d56Sopenharmony_ci and constructs the group's message from it. :: 9797db96d56Sopenharmony_ci 9807db96d56Sopenharmony_ci class Errors(ExceptionGroup): 9817db96d56Sopenharmony_ci def __new__(cls, errors, exit_code): 9827db96d56Sopenharmony_ci self = super().__new__(Errors, f"exit code: {exit_code}", errors) 9837db96d56Sopenharmony_ci self.exit_code = exit_code 9847db96d56Sopenharmony_ci return self 9857db96d56Sopenharmony_ci 9867db96d56Sopenharmony_ci def derive(self, excs): 9877db96d56Sopenharmony_ci return Errors(excs, self.exit_code) 9887db96d56Sopenharmony_ci 9897db96d56Sopenharmony_ci Like :exc:`ExceptionGroup`, any subclass of :exc:`BaseExceptionGroup` which 9907db96d56Sopenharmony_ci is also a subclass of :exc:`Exception` can only wrap instances of 9917db96d56Sopenharmony_ci :exc:`Exception`. 9927db96d56Sopenharmony_ci 9937db96d56Sopenharmony_ci .. versionadded:: 3.11 9947db96d56Sopenharmony_ci 9957db96d56Sopenharmony_ci 9967db96d56Sopenharmony_ciException hierarchy 9977db96d56Sopenharmony_ci------------------- 9987db96d56Sopenharmony_ci 9997db96d56Sopenharmony_ciThe class hierarchy for built-in exceptions is: 10007db96d56Sopenharmony_ci 10017db96d56Sopenharmony_ci.. literalinclude:: ../../Lib/test/exception_hierarchy.txt 10027db96d56Sopenharmony_ci :language: text 1003