| .. _bltin-exceptions: | 
 |  | 
 | Built-in Exceptions | 
 | =================== | 
 |  | 
 | .. module:: exceptions | 
 |    :synopsis: Standard exception classes. | 
 |  | 
 |  | 
 | Exceptions should be class objects.   The exceptions are defined in the module | 
 | :mod:`exceptions`.  This module never needs to be imported explicitly: the | 
 | exceptions are provided in the built-in namespace as well as the | 
 | :mod:`exceptions` module. | 
 |  | 
 | .. index:: | 
 |    statement: try | 
 |    statement: except | 
 |  | 
 | For class exceptions, in a :keyword:`try` statement with an :keyword:`except` | 
 | clause that mentions a particular class, that clause also handles any exception | 
 | classes derived from that class (but not exception classes from which *it* is | 
 | derived).  Two exception classes that are not related via subclassing are never | 
 | equivalent, even if they have the same name. | 
 |  | 
 | .. index:: statement: raise | 
 |  | 
 | The built-in exceptions listed below can be generated by the interpreter or | 
 | built-in functions.  Except where mentioned, they have an "associated value" | 
 | indicating the detailed cause of the error. This may be a string or a tuple | 
 | containing several items of information (e.g., an error code and a string | 
 | explaining the code). The associated value is the second argument to the | 
 | :keyword:`raise` statement.  If the exception class is derived from the standard | 
 | root class :exc:`BaseException`, the associated value is present as the | 
 | exception instance's :attr:`args` attribute. | 
 |  | 
 | User code can raise built-in exceptions.  This can be used to test an exception | 
 | handler or to report an error condition "just like" the situation in which the | 
 | interpreter raises the same exception; but beware that there is nothing to | 
 | prevent user code from raising an inappropriate error. | 
 |  | 
 | The built-in exception classes can be sub-classed to define new exceptions; | 
 | programmers are encouraged to at least derive new exceptions from the | 
 | :exc:`Exception` class and not :exc:`BaseException`.  More information on | 
 | defining exceptions is available in the Python Tutorial under | 
 | :ref:`tut-userexceptions`. | 
 |  | 
 | The following exceptions are only used as base classes for other exceptions. | 
 |  | 
 | .. XXX document with_traceback() | 
 |  | 
 | .. exception:: BaseException | 
 |  | 
 |    The base class for all built-in exceptions.  It is not meant to be directly | 
 |    inherited by user-defined classes (for that use :exc:`Exception`).  If | 
 |    :func:`str` or :func:`unicode` is called on an instance of this class, the | 
 |    representation of the argument(s) to the instance are returned or the emptry | 
 |    string when there were no arguments.  All arguments are  stored in :attr:`args` | 
 |    as a tuple. | 
 |  | 
 |  | 
 | .. exception:: Exception | 
 |  | 
 |    All built-in, non-system-exiting exceptions are derived from this class.  All | 
 |    user-defined exceptions should also be derived from this class. | 
 |  | 
 |  | 
 | .. exception:: ArithmeticError | 
 |  | 
 |    The base class for those built-in exceptions that are raised for various | 
 |    arithmetic errors: :exc:`OverflowError`, :exc:`ZeroDivisionError`, | 
 |    :exc:`FloatingPointError`. | 
 |  | 
 |  | 
 | .. exception:: LookupError | 
 |  | 
 |    The base class for the exceptions that are raised when a key or index used on a | 
 |    mapping or sequence is invalid: :exc:`IndexError`, :exc:`KeyError`.  This can be | 
 |    raised directly by :func:`sys.setdefaultencoding`. | 
 |  | 
 |  | 
 | .. exception:: EnvironmentError | 
 |  | 
 |    The base class for exceptions that can occur outside the Python system: | 
 |    :exc:`IOError`, :exc:`OSError`.  When exceptions of this type are created with a | 
 |    2-tuple, the first item is available on the instance's :attr:`errno` attribute | 
 |    (it is assumed to be an error number), and the second item is available on the | 
 |    :attr:`strerror` attribute (it is usually the associated error message).  The | 
 |    tuple itself is also available on the :attr:`args` attribute. | 
 |  | 
 |    When an :exc:`EnvironmentError` exception is instantiated with a 3-tuple, the | 
 |    first two items are available as above, while the third item is available on the | 
 |    :attr:`filename` attribute.  However, for backwards compatibility, the | 
 |    :attr:`args` attribute contains only a 2-tuple of the first two constructor | 
 |    arguments. | 
 |  | 
 |    The :attr:`filename` attribute is ``None`` when this exception is created with | 
 |    other than 3 arguments.  The :attr:`errno` and :attr:`strerror` attributes are | 
 |    also ``None`` when the instance was created with other than 2 or 3 arguments. | 
 |    In this last case, :attr:`args` contains the verbatim constructor arguments as a | 
 |    tuple. | 
 |  | 
 | The following exceptions are the exceptions that are actually raised. | 
 |  | 
 |  | 
 | .. exception:: AssertionError | 
 |  | 
 |    .. index:: statement: assert | 
 |  | 
 |    Raised when an :keyword:`assert` statement fails. | 
 |  | 
 |  | 
 | .. exception:: AttributeError | 
 |  | 
 |    Raised when an attribute reference or assignment fails.  (When an object does | 
 |    not support attribute references or attribute assignments at all, | 
 |    :exc:`TypeError` is raised.) | 
 |  | 
 |    .. % xref to attribute reference? | 
 |  | 
 |  | 
 | .. exception:: EOFError | 
 |  | 
 |    Raised when attempting to read beyond the end of a file. (N.B.: the | 
 |    :meth:`file.read` and :meth:`file.readline` methods return an empty string | 
 |    when they hit EOF.) | 
 |  | 
 |  | 
 | .. exception:: FloatingPointError | 
 |  | 
 |    Raised when a floating point operation fails.  This exception is always defined, | 
 |    but can only be raised when Python is configured with the | 
 |    :option:`--with-fpectl` option, or the :const:`WANT_SIGFPE_HANDLER` symbol is | 
 |    defined in the :file:`pyconfig.h` file. | 
 |  | 
 |  | 
 | .. exception:: GeneratorExit | 
 |  | 
 |    Raise when a generator's :meth:`close` method is called. | 
 |  | 
 |  | 
 | .. exception:: IOError | 
 |  | 
 |    Raised when an I/O operation (such as the built-in :func:`print` or | 
 |    :func:`open` functions or a method of a file object) fails for an I/O-related | 
 |    reason, e.g., "file not found" or "disk full". | 
 |  | 
 |    This class is derived from :exc:`EnvironmentError`.  See the discussion above | 
 |    for more information on exception instance attributes. | 
 |  | 
 |    .. versionchanged:: 2.6 | 
 |       Changed :exc:`socket.error` to use this as a base class. | 
 |  | 
 |  | 
 | .. exception:: ImportError | 
 |  | 
 |    Raised when an :keyword:`import` statement fails to find the module definition | 
 |    or when a ``from ... import`` fails to find a name that is to be imported. | 
 |  | 
 |  | 
 | .. exception:: IndexError | 
 |  | 
 |    Raised when a sequence subscript is out of range.  (Slice indices are silently | 
 |    truncated to fall in the allowed range; if an index is not a plain integer, | 
 |    :exc:`TypeError` is raised.) | 
 |  | 
 |    .. % XXXJH xref to sequences | 
 |  | 
 |  | 
 | .. exception:: KeyError | 
 |  | 
 |    Raised when a mapping (dictionary) key is not found in the set of existing keys. | 
 |  | 
 |    .. % XXXJH xref to mapping objects? | 
 |  | 
 |  | 
 | .. exception:: KeyboardInterrupt | 
 |  | 
 |    Raised when the user hits the interrupt key (normally :kbd:`Control-C` or | 
 |    :kbd:`Delete`).  During execution, a check for interrupts is made | 
 |    regularly. The exception inherits from :exc:`BaseException` so as to not be | 
 |    accidentally caught by code that catches :exc:`Exception` and thus prevent | 
 |    the interpreter from exiting. | 
 |  | 
 |  | 
 | .. exception:: MemoryError | 
 |  | 
 |    Raised when an operation runs out of memory but the situation may still be | 
 |    rescued (by deleting some objects).  The associated value is a string indicating | 
 |    what kind of (internal) operation ran out of memory. Note that because of the | 
 |    underlying memory management architecture (C's :cfunc:`malloc` function), the | 
 |    interpreter may not always be able to completely recover from this situation; it | 
 |    nevertheless raises an exception so that a stack traceback can be printed, in | 
 |    case a run-away program was the cause. | 
 |  | 
 |  | 
 | .. exception:: NameError | 
 |  | 
 |    Raised when a local or global name is not found.  This applies only to | 
 |    unqualified names.  The associated value is an error message that includes the | 
 |    name that could not be found. | 
 |  | 
 |  | 
 | .. exception:: NotImplementedError | 
 |  | 
 |    This exception is derived from :exc:`RuntimeError`.  In user defined base | 
 |    classes, abstract methods should raise this exception when they require derived | 
 |    classes to override the method. | 
 |  | 
 |  | 
 | .. exception:: OSError | 
 |  | 
 |    This class is derived from :exc:`EnvironmentError` and is used primarily as the | 
 |    :mod:`os` module's ``os.error`` exception. See :exc:`EnvironmentError` above for | 
 |    a description of the possible associated values. | 
 |  | 
 |  | 
 | .. exception:: OverflowError | 
 |  | 
 |    Raised when the result of an arithmetic operation is too large to be | 
 |    represented.  This cannot occur for long integers (which would rather raise | 
 |    :exc:`MemoryError` than give up).  Because of the lack of standardization of | 
 |    floating point exception handling in C, most floating point operations also | 
 |    aren't checked. | 
 |  | 
 |  | 
 | .. exception:: ReferenceError | 
 |  | 
 |    This exception is raised when a weak reference proxy, created by the | 
 |    :func:`weakref.proxy` function, is used to access an attribute of the referent | 
 |    after it has been garbage collected. For more information on weak references, | 
 |    see the :mod:`weakref` module. | 
 |  | 
 |  | 
 | .. exception:: RuntimeError | 
 |  | 
 |    Raised when an error is detected that doesn't fall in any of the other | 
 |    categories.  The associated value is a string indicating what precisely went | 
 |    wrong.  (This exception is mostly a relic from a previous version of the | 
 |    interpreter; it is not used very much any more.) | 
 |  | 
 |  | 
 | .. exception:: StopIteration | 
 |  | 
 |    Raised by builtin :func:`next` and an iterator's :meth:`__next__` method to | 
 |    signal that there are no further values. | 
 |  | 
 |  | 
 | .. exception:: SyntaxError | 
 |  | 
 |    Raised when the parser encounters a syntax error.  This may occur in an | 
 |    :keyword:`import` statement, in a call to the built-in functions :func:`exec` | 
 |    or :func:`eval`, or when reading the initial script or standard input | 
 |    (also interactively). | 
 |  | 
 |    Instances of this class have attributes :attr:`filename`, :attr:`lineno`, | 
 |    :attr:`offset` and :attr:`text` for easier access to the details.  :func:`str` | 
 |    of the exception instance returns only the message. | 
 |  | 
 |  | 
 | .. exception:: SystemError | 
 |  | 
 |    Raised when the interpreter finds an internal error, but the situation does not | 
 |    look so serious to cause it to abandon all hope. The associated value is a | 
 |    string indicating what went wrong (in low-level terms). | 
 |  | 
 |    You should report this to the author or maintainer of your Python interpreter. | 
 |    Be sure to report the version of the Python interpreter (``sys.version``; it is | 
 |    also printed at the start of an interactive Python session), the exact error | 
 |    message (the exception's associated value) and if possible the source of the | 
 |    program that triggered the error. | 
 |  | 
 |  | 
 | .. exception:: SystemExit | 
 |  | 
 |    This exception is raised by the :func:`sys.exit` function.  When it is not | 
 |    handled, the Python interpreter exits; no stack traceback is printed.  If the | 
 |    associated value is a plain integer, it specifies the system exit status (passed | 
 |    to C's :cfunc:`exit` function); if it is ``None``, the exit status is zero; if | 
 |    it has another type (such as a string), the object's value is printed and the | 
 |    exit status is one. | 
 |  | 
 |    Instances have an attribute :attr:`code` which is set to the proposed exit | 
 |    status or error message (defaulting to ``None``). Also, this exception derives | 
 |    directly from :exc:`BaseException` and not :exc:`Exception`, since it is not | 
 |    technically an error. | 
 |  | 
 |    A call to :func:`sys.exit` is translated into an exception so that clean-up | 
 |    handlers (:keyword:`finally` clauses of :keyword:`try` statements) can be | 
 |    executed, and so that a debugger can execute a script without running the risk | 
 |    of losing control.  The :func:`os._exit` function can be used if it is | 
 |    absolutely positively necessary to exit immediately (for example, in the child | 
 |    process after a call to :func:`fork`). | 
 |  | 
 |    The exception inherits from :exc:`BaseException` instead of :exc:`Exception` so | 
 |    that it is not accidentally caught by code that catches :exc:`Exception`.  This | 
 |    allows the exception to properly propagate up and cause the interpreter to exit. | 
 |  | 
 |  | 
 | .. exception:: TypeError | 
 |  | 
 |    Raised when an operation or function is applied to an object of inappropriate | 
 |    type.  The associated value is a string giving details about the type mismatch. | 
 |  | 
 |  | 
 | .. exception:: UnboundLocalError | 
 |  | 
 |    Raised when a reference is made to a local variable in a function or method, but | 
 |    no value has been bound to that variable.  This is a subclass of | 
 |    :exc:`NameError`. | 
 |  | 
 |  | 
 | .. exception:: UnicodeError | 
 |  | 
 |    Raised when a Unicode-related encoding or decoding error occurs.  It is a | 
 |    subclass of :exc:`ValueError`. | 
 |  | 
 |  | 
 | .. exception:: UnicodeEncodeError | 
 |  | 
 |    Raised when a Unicode-related error occurs during encoding.  It is a subclass of | 
 |    :exc:`UnicodeError`. | 
 |  | 
 |  | 
 | .. exception:: UnicodeDecodeError | 
 |  | 
 |    Raised when a Unicode-related error occurs during decoding.  It is a subclass of | 
 |    :exc:`UnicodeError`. | 
 |  | 
 |  | 
 | .. exception:: UnicodeTranslateError | 
 |  | 
 |    Raised when a Unicode-related error occurs during translating.  It is a subclass | 
 |    of :exc:`UnicodeError`. | 
 |  | 
 |  | 
 | .. exception:: ValueError | 
 |  | 
 |    Raised when a built-in operation or function receives an argument that has the | 
 |    right type but an inappropriate value, and the situation is not described by a | 
 |    more precise exception such as :exc:`IndexError`. | 
 |  | 
 |  | 
 | .. exception:: WindowsError | 
 |  | 
 |    Raised when a Windows-specific error occurs or when the error number does not | 
 |    correspond to an :cdata:`errno` value.  The :attr:`winerror` and | 
 |    :attr:`strerror` values are created from the return values of the | 
 |    :cfunc:`GetLastError` and :cfunc:`FormatMessage` functions from the Windows | 
 |    Platform API. The :attr:`errno` value maps the :attr:`winerror` value to | 
 |    corresponding ``errno.h`` values. This is a subclass of :exc:`OSError`. | 
 |  | 
 |  | 
 | .. exception:: ZeroDivisionError | 
 |  | 
 |    Raised when the second argument of a division or modulo operation is zero.  The | 
 |    associated value is a string indicating the type of the operands and the | 
 |    operation. | 
 |  | 
 | The following exceptions are used as warning categories; see the :mod:`warnings` | 
 | module for more information. | 
 |  | 
 |  | 
 | .. exception:: Warning | 
 |  | 
 |    Base class for warning categories. | 
 |  | 
 |  | 
 | .. exception:: UserWarning | 
 |  | 
 |    Base class for warnings generated by user code. | 
 |  | 
 |  | 
 | .. exception:: DeprecationWarning | 
 |  | 
 |    Base class for warnings about deprecated features. | 
 |  | 
 |  | 
 | .. exception:: PendingDeprecationWarning | 
 |  | 
 |    Base class for warnings about features which will be deprecated in the future. | 
 |  | 
 |  | 
 | .. exception:: SyntaxWarning | 
 |  | 
 |    Base class for warnings about dubious syntax | 
 |  | 
 |  | 
 | .. exception:: RuntimeWarning | 
 |  | 
 |    Base class for warnings about dubious runtime behavior. | 
 |  | 
 |  | 
 | .. exception:: FutureWarning | 
 |  | 
 |    Base class for warnings about constructs that will change semantically in the | 
 |    future. | 
 |  | 
 |  | 
 | .. exception:: ImportWarning | 
 |  | 
 |    Base class for warnings about probable mistakes in module imports. | 
 |  | 
 |  | 
 | .. exception:: UnicodeWarning | 
 |  | 
 |    Base class for warnings related to Unicode. | 
 |  | 
 | The class hierarchy for built-in exceptions is: | 
 |  | 
 |  | 
 | .. literalinclude:: ../../Lib/test/exception_hierarchy.txt |