<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>5. Built-in Exceptions — Python v3.2.2 documentation</title> <link rel="stylesheet" href="../_static/default.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../', VERSION: '3.2.2', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/underscore.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script> <script type="text/javascript" src="../_static/sidebar.js"></script> <link rel="search" type="application/opensearchdescription+xml" title="Search within Python v3.2.2 documentation" href="../_static/opensearch.xml"/> <link rel="author" title="About these documents" href="../about.html" /> <link rel="copyright" title="Copyright" href="../copyright.html" /> <link rel="top" title="Python v3.2.2 documentation" href="../index.html" /> <link rel="up" title="The Python Standard Library" href="index.html" /> <link rel="next" title="6. String Services" href="strings.html" /> <link rel="prev" title="4. Built-in Types" href="stdtypes.html" /> <link rel="shortcut icon" type="image/png" href="../_static/py.png" /> </head> <body> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="strings.html" title="6. String Services" accesskey="N">next</a> |</li> <li class="right" > <a href="stdtypes.html" title="4. Built-in Types" accesskey="P">previous</a> |</li> <li><img src="../_static/py.png" alt="" style="vertical-align: middle; margin-top: -1px"/></li> <li><a href="../index.html">Python v3.2.2 documentation</a> »</li> <li><a href="index.html" accesskey="U">The Python Standard Library</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <div class="section" id="built-in-exceptions"> <span id="bltin-exceptions"></span><h1>5. Built-in Exceptions<a class="headerlink" href="#built-in-exceptions" title="Permalink to this headline">¶</a></h1> <p id="index-0">In Python, all exceptions must be instances of a class that derives from <a class="reference internal" href="#BaseException" title="BaseException"><tt class="xref py py-class docutils literal"><span class="pre">BaseException</span></tt></a>. In a <a class="reference internal" href="../reference/compound_stmts.html#try"><tt class="xref std std-keyword docutils literal"><span class="pre">try</span></tt></a> statement with an <a class="reference internal" href="../reference/compound_stmts.html#except"><tt class="xref std std-keyword docutils literal"><span class="pre">except</span></tt></a> clause that mentions a particular class, that clause also handles any exception classes derived from that class (but not exception classes from which <em>it</em> is derived). Two exception classes that are not related via subclassing are never equivalent, even if they have the same name.</p> <p id="index-1">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 of several items of information (e.g., an error code and a string explaining the code). The associated value is usually passed as arguments to the exception class’s constructor.</p> <p>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.</p> <p>The built-in exception classes can be sub-classed to define new exceptions; programmers are encouraged to at least derive new exceptions from the <a class="reference internal" href="#Exception" title="Exception"><tt class="xref py py-exc docutils literal"><span class="pre">Exception</span></tt></a> class and not <a class="reference internal" href="#BaseException" title="BaseException"><tt class="xref py py-exc docutils literal"><span class="pre">BaseException</span></tt></a>. More information on defining exceptions is available in the Python Tutorial under <a class="reference internal" href="../tutorial/errors.html#tut-userexceptions"><em>User-defined Exceptions</em></a>.</p> <p>The following exceptions are used mostly as base classes for other exceptions.</p> <dl class="exception"> <dt id="BaseException"> <em class="property">exception </em><tt class="descname">BaseException</tt><a class="headerlink" href="#BaseException" title="Permalink to this definition">¶</a></dt> <dd><p>The base class for all built-in exceptions. It is not meant to be directly inherited by user-defined classes (for that, use <a class="reference internal" href="#Exception" title="Exception"><tt class="xref py py-exc docutils literal"><span class="pre">Exception</span></tt></a>). If <a class="reference internal" href="functions.html#bytes" title="bytes"><tt class="xref py py-func docutils literal"><span class="pre">bytes()</span></tt></a> or <a class="reference internal" href="functions.html#str" title="str"><tt class="xref py py-func docutils literal"><span class="pre">str()</span></tt></a> is called on an instance of this class, the representation of the argument(s) to the instance are returned, or the empty string when there were no arguments.</p> <dl class="attribute"> <dt id="BaseException.args"> <tt class="descname">args</tt><a class="headerlink" href="#BaseException.args" title="Permalink to this definition">¶</a></dt> <dd><p>The tuple of arguments given to the exception constructor. Some built-in exceptions (like <a class="reference internal" href="#IOError" title="IOError"><tt class="xref py py-exc docutils literal"><span class="pre">IOError</span></tt></a>) expect a certain number of arguments and assign a special meaning to the elements of this tuple, while others are usually called only with a single string giving an error message.</p> </dd></dl> <dl class="method"> <dt id="BaseException.with_traceback"> <tt class="descname">with_traceback</tt><big>(</big><em>tb</em><big>)</big><a class="headerlink" href="#BaseException.with_traceback" title="Permalink to this definition">¶</a></dt> <dd><p>This method sets <em>tb</em> as the new traceback for the exception and returns the exception object. It is usually used in exception handling code like this:</p> <div class="highlight-python3"><div class="highlight"><pre><span class="k">try</span><span class="p">:</span> <span class="o">...</span> <span class="k">except</span> <span class="n">SomeException</span><span class="p">:</span> <span class="n">tb</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">exc_info</span><span class="p">()[</span><span class="mi">2</span><span class="p">]</span> <span class="k">raise</span> <span class="n">OtherException</span><span class="p">(</span><span class="o">...</span><span class="p">)</span><span class="o">.</span><span class="n">with_traceback</span><span class="p">(</span><span class="n">tb</span><span class="p">)</span> </pre></div> </div> </dd></dl> </dd></dl> <dl class="exception"> <dt id="Exception"> <em class="property">exception </em><tt class="descname">Exception</tt><a class="headerlink" href="#Exception" title="Permalink to this definition">¶</a></dt> <dd><p>All built-in, non-system-exiting exceptions are derived from this class. All user-defined exceptions should also be derived from this class.</p> </dd></dl> <dl class="exception"> <dt id="ArithmeticError"> <em class="property">exception </em><tt class="descname">ArithmeticError</tt><a class="headerlink" href="#ArithmeticError" title="Permalink to this definition">¶</a></dt> <dd><p>The base class for those built-in exceptions that are raised for various arithmetic errors: <a class="reference internal" href="#OverflowError" title="OverflowError"><tt class="xref py py-exc docutils literal"><span class="pre">OverflowError</span></tt></a>, <a class="reference internal" href="#ZeroDivisionError" title="ZeroDivisionError"><tt class="xref py py-exc docutils literal"><span class="pre">ZeroDivisionError</span></tt></a>, <a class="reference internal" href="#FloatingPointError" title="FloatingPointError"><tt class="xref py py-exc docutils literal"><span class="pre">FloatingPointError</span></tt></a>.</p> </dd></dl> <dl class="exception"> <dt id="BufferError"> <em class="property">exception </em><tt class="descname">BufferError</tt><a class="headerlink" href="#BufferError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when a <a class="reference internal" href="../c-api/buffer.html#bufferobjects"><em>buffer</em></a> related operation cannot be performed.</p> </dd></dl> <dl class="exception"> <dt id="LookupError"> <em class="property">exception </em><tt class="descname">LookupError</tt><a class="headerlink" href="#LookupError" title="Permalink to this definition">¶</a></dt> <dd><p>The base class for the exceptions that are raised when a key or index used on a mapping or sequence is invalid: <a class="reference internal" href="#IndexError" title="IndexError"><tt class="xref py py-exc docutils literal"><span class="pre">IndexError</span></tt></a>, <a class="reference internal" href="#KeyError" title="KeyError"><tt class="xref py py-exc docutils literal"><span class="pre">KeyError</span></tt></a>. This can be raised directly by <a class="reference internal" href="codecs.html#codecs.lookup" title="codecs.lookup"><tt class="xref py py-func docutils literal"><span class="pre">codecs.lookup()</span></tt></a>.</p> </dd></dl> <dl class="exception"> <dt id="EnvironmentError"> <em class="property">exception </em><tt class="descname">EnvironmentError</tt><a class="headerlink" href="#EnvironmentError" title="Permalink to this definition">¶</a></dt> <dd><p>The base class for exceptions that can occur outside the Python system: <a class="reference internal" href="#IOError" title="IOError"><tt class="xref py py-exc docutils literal"><span class="pre">IOError</span></tt></a>, <a class="reference internal" href="#OSError" title="OSError"><tt class="xref py py-exc docutils literal"><span class="pre">OSError</span></tt></a>. When exceptions of this type are created with a 2-tuple, the first item is available on the instance’s <a class="reference internal" href="errno.html#module-errno" title="errno: Standard errno system symbols."><tt class="xref py py-attr docutils literal"><span class="pre">errno</span></tt></a> attribute (it is assumed to be an error number), and the second item is available on the <tt class="xref py py-attr docutils literal"><span class="pre">strerror</span></tt> attribute (it is usually the associated error message). The tuple itself is also available on the <tt class="xref py py-attr docutils literal"><span class="pre">args</span></tt> attribute.</p> <p>When an <a class="reference internal" href="#EnvironmentError" title="EnvironmentError"><tt class="xref py py-exc docutils literal"><span class="pre">EnvironmentError</span></tt></a> exception is instantiated with a 3-tuple, the first two items are available as above, while the third item is available on the <tt class="xref py py-attr docutils literal"><span class="pre">filename</span></tt> attribute. However, for backwards compatibility, the <tt class="xref py py-attr docutils literal"><span class="pre">args</span></tt> attribute contains only a 2-tuple of the first two constructor arguments.</p> <p>The <tt class="xref py py-attr docutils literal"><span class="pre">filename</span></tt> attribute is <tt class="xref docutils literal"><span class="pre">None</span></tt> when this exception is created with other than 3 arguments. The <a class="reference internal" href="errno.html#module-errno" title="errno: Standard errno system symbols."><tt class="xref py py-attr docutils literal"><span class="pre">errno</span></tt></a> and <tt class="xref py py-attr docutils literal"><span class="pre">strerror</span></tt> attributes are also <tt class="xref docutils literal"><span class="pre">None</span></tt> when the instance was created with other than 2 or 3 arguments. In this last case, <tt class="xref py py-attr docutils literal"><span class="pre">args</span></tt> contains the verbatim constructor arguments as a tuple.</p> </dd></dl> <p>The following exceptions are the exceptions that are usually raised.</p> <dl class="exception"> <dt id="AssertionError"> <em class="property">exception </em><tt class="descname">AssertionError</tt><a class="headerlink" href="#AssertionError" title="Permalink to this definition">¶</a></dt> <dd><p id="index-2">Raised when an <a class="reference internal" href="../reference/simple_stmts.html#assert"><tt class="xref std std-keyword docutils literal"><span class="pre">assert</span></tt></a> statement fails.</p> </dd></dl> <dl class="exception"> <dt id="AttributeError"> <em class="property">exception </em><tt class="descname">AttributeError</tt><a class="headerlink" href="#AttributeError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when an attribute reference (see <a class="reference internal" href="../reference/expressions.html#attribute-references"><em>Attribute references</em></a>) or assignment fails. (When an object does not support attribute references or attribute assignments at all, <a class="reference internal" href="#TypeError" title="TypeError"><tt class="xref py py-exc docutils literal"><span class="pre">TypeError</span></tt></a> is raised.)</p> </dd></dl> <dl class="exception"> <dt id="EOFError"> <em class="property">exception </em><tt class="descname">EOFError</tt><a class="headerlink" href="#EOFError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when one of the built-in functions (<a class="reference internal" href="functions.html#input" title="input"><tt class="xref py py-func docutils literal"><span class="pre">input()</span></tt></a> or <tt class="xref py py-func docutils literal"><span class="pre">raw_input()</span></tt>) hits an end-of-file condition (EOF) without reading any data. (N.B.: the <tt class="xref py py-meth docutils literal"><span class="pre">file.read()</span></tt> and <tt class="xref py py-meth docutils literal"><span class="pre">file.readline()</span></tt> methods return an empty string when they hit EOF.)</p> </dd></dl> <dl class="exception"> <dt id="FloatingPointError"> <em class="property">exception </em><tt class="descname">FloatingPointError</tt><a class="headerlink" href="#FloatingPointError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when a floating point operation fails. This exception is always defined, but can only be raised when Python is configured with the <tt class="docutils literal"><span class="pre">--with-fpectl</span></tt> option, or the <tt class="xref py py-const docutils literal"><span class="pre">WANT_SIGFPE_HANDLER</span></tt> symbol is defined in the <tt class="file docutils literal"><span class="pre">pyconfig.h</span></tt> file.</p> </dd></dl> <dl class="exception"> <dt id="GeneratorExit"> <em class="property">exception </em><tt class="descname">GeneratorExit</tt><a class="headerlink" href="#GeneratorExit" title="Permalink to this definition">¶</a></dt> <dd><p>Raise when a <a class="reference internal" href="../glossary.html#term-generator"><em class="xref std std-term">generator</em></a>‘s <tt class="xref py py-meth docutils literal"><span class="pre">close()</span></tt> method is called. It directly inherits from <a class="reference internal" href="#BaseException" title="BaseException"><tt class="xref py py-exc docutils literal"><span class="pre">BaseException</span></tt></a> instead of <a class="reference internal" href="#Exception" title="Exception"><tt class="xref py py-exc docutils literal"><span class="pre">Exception</span></tt></a> since it is technically not an error.</p> </dd></dl> <dl class="exception"> <dt id="IOError"> <em class="property">exception </em><tt class="descname">IOError</tt><a class="headerlink" href="#IOError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when an I/O operation (such as the built-in <a class="reference internal" href="functions.html#print" title="print"><tt class="xref py py-func docutils literal"><span class="pre">print()</span></tt></a> or <a class="reference internal" href="functions.html#open" title="open"><tt class="xref py py-func docutils literal"><span class="pre">open()</span></tt></a> functions or a method of a <a class="reference internal" href="../glossary.html#term-file-object"><em class="xref std std-term">file object</em></a>) fails for an I/O-related reason, e.g., “file not found” or “disk full”.</p> <p>This class is derived from <a class="reference internal" href="#EnvironmentError" title="EnvironmentError"><tt class="xref py py-exc docutils literal"><span class="pre">EnvironmentError</span></tt></a>. See the discussion above for more information on exception instance attributes.</p> </dd></dl> <dl class="exception"> <dt id="ImportError"> <em class="property">exception </em><tt class="descname">ImportError</tt><a class="headerlink" href="#ImportError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when an <a class="reference internal" href="../reference/simple_stmts.html#import"><tt class="xref std std-keyword docutils literal"><span class="pre">import</span></tt></a> statement fails to find the module definition or when a <tt class="docutils literal"><span class="pre">from</span> <span class="pre">...</span> <span class="pre">import</span></tt> fails to find a name that is to be imported.</p> </dd></dl> <dl class="exception"> <dt id="IndexError"> <em class="property">exception </em><tt class="descname">IndexError</tt><a class="headerlink" href="#IndexError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when a sequence subscript is out of range. (Slice indices are silently truncated to fall in the allowed range; if an index is not an integer, <a class="reference internal" href="#TypeError" title="TypeError"><tt class="xref py py-exc docutils literal"><span class="pre">TypeError</span></tt></a> is raised.)</p> </dd></dl> <dl class="exception"> <dt id="KeyError"> <em class="property">exception </em><tt class="descname">KeyError</tt><a class="headerlink" href="#KeyError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when a mapping (dictionary) key is not found in the set of existing keys.</p> </dd></dl> <dl class="exception"> <dt id="KeyboardInterrupt"> <em class="property">exception </em><tt class="descname">KeyboardInterrupt</tt><a class="headerlink" href="#KeyboardInterrupt" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when the user hits the interrupt key (normally <tt class="kbd docutils literal"><span class="pre">Control-C</span></tt> or <tt class="kbd docutils literal"><span class="pre">Delete</span></tt>). During execution, a check for interrupts is made regularly. The exception inherits from <a class="reference internal" href="#BaseException" title="BaseException"><tt class="xref py py-exc docutils literal"><span class="pre">BaseException</span></tt></a> so as to not be accidentally caught by code that catches <a class="reference internal" href="#Exception" title="Exception"><tt class="xref py py-exc docutils literal"><span class="pre">Exception</span></tt></a> and thus prevent the interpreter from exiting.</p> </dd></dl> <dl class="exception"> <dt id="MemoryError"> <em class="property">exception </em><tt class="descname">MemoryError</tt><a class="headerlink" href="#MemoryError" title="Permalink to this definition">¶</a></dt> <dd><p>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 <tt class="xref c c-func docutils literal"><span class="pre">malloc()</span></tt> 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.</p> </dd></dl> <dl class="exception"> <dt id="NameError"> <em class="property">exception </em><tt class="descname">NameError</tt><a class="headerlink" href="#NameError" title="Permalink to this definition">¶</a></dt> <dd><p>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.</p> </dd></dl> <dl class="exception"> <dt id="NotImplementedError"> <em class="property">exception </em><tt class="descname">NotImplementedError</tt><a class="headerlink" href="#NotImplementedError" title="Permalink to this definition">¶</a></dt> <dd><p>This exception is derived from <a class="reference internal" href="#RuntimeError" title="RuntimeError"><tt class="xref py py-exc docutils literal"><span class="pre">RuntimeError</span></tt></a>. In user defined base classes, abstract methods should raise this exception when they require derived classes to override the method.</p> </dd></dl> <dl class="exception"> <dt id="OSError"> <em class="property">exception </em><tt class="descname">OSError</tt><a class="headerlink" href="#OSError" title="Permalink to this definition">¶</a></dt> <dd><p id="index-3">This exception is derived from <a class="reference internal" href="#EnvironmentError" title="EnvironmentError"><tt class="xref py py-exc docutils literal"><span class="pre">EnvironmentError</span></tt></a>. It is raised when a function returns a system-related error (not for illegal argument types or other incidental errors). The <a class="reference internal" href="errno.html#module-errno" title="errno: Standard errno system symbols."><tt class="xref py py-attr docutils literal"><span class="pre">errno</span></tt></a> attribute is a numeric error code from <tt class="xref c c-data docutils literal"><span class="pre">errno</span></tt>, and the <tt class="xref py py-attr docutils literal"><span class="pre">strerror</span></tt> attribute is the corresponding string, as would be printed by the C function <tt class="xref c c-func docutils literal"><span class="pre">perror()</span></tt>. See the module <a class="reference internal" href="errno.html#module-errno" title="errno: Standard errno system symbols."><tt class="xref py py-mod docutils literal"><span class="pre">errno</span></tt></a>, which contains names for the error codes defined by the underlying operating system.</p> <p>For exceptions that involve a file system path (such as <tt class="xref py py-func docutils literal"><span class="pre">chdir()</span></tt> or <tt class="xref py py-func docutils literal"><span class="pre">unlink()</span></tt>), the exception instance will contain a third attribute, <tt class="xref py py-attr docutils literal"><span class="pre">filename</span></tt>, which is the file name passed to the function.</p> </dd></dl> <dl class="exception"> <dt id="OverflowError"> <em class="property">exception </em><tt class="descname">OverflowError</tt><a class="headerlink" href="#OverflowError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when the result of an arithmetic operation is too large to be represented. This cannot occur for integers (which would rather raise <a class="reference internal" href="#MemoryError" title="MemoryError"><tt class="xref py py-exc docutils literal"><span class="pre">MemoryError</span></tt></a> than give up). Because of the lack of standardization of floating point exception handling in C, most floating point operations also aren’t checked.</p> </dd></dl> <dl class="exception"> <dt id="ReferenceError"> <em class="property">exception </em><tt class="descname">ReferenceError</tt><a class="headerlink" href="#ReferenceError" title="Permalink to this definition">¶</a></dt> <dd><p>This exception is raised when a weak reference proxy, created by the <a class="reference internal" href="weakref.html#weakref.proxy" title="weakref.proxy"><tt class="xref py py-func docutils literal"><span class="pre">weakref.proxy()</span></tt></a> function, is used to access an attribute of the referent after it has been garbage collected. For more information on weak references, see the <a class="reference internal" href="weakref.html#module-weakref" title="weakref: Support for weak references and weak dictionaries."><tt class="xref py py-mod docutils literal"><span class="pre">weakref</span></tt></a> module.</p> </dd></dl> <dl class="exception"> <dt id="RuntimeError"> <em class="property">exception </em><tt class="descname">RuntimeError</tt><a class="headerlink" href="#RuntimeError" title="Permalink to this definition">¶</a></dt> <dd><p>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.)</p> </dd></dl> <dl class="exception"> <dt id="StopIteration"> <em class="property">exception </em><tt class="descname">StopIteration</tt><a class="headerlink" href="#StopIteration" title="Permalink to this definition">¶</a></dt> <dd><p>Raised by built-in function <a class="reference internal" href="functions.html#next" title="next"><tt class="xref py py-func docutils literal"><span class="pre">next()</span></tt></a> and an <a class="reference internal" href="../glossary.html#term-iterator"><em class="xref std std-term">iterator</em></a>‘s <tt class="xref py py-meth docutils literal"><span class="pre">__next__()</span></tt> method to signal that there are no further values.</p> </dd></dl> <dl class="exception"> <dt id="SyntaxError"> <em class="property">exception </em><tt class="descname">SyntaxError</tt><a class="headerlink" href="#SyntaxError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when the parser encounters a syntax error. This may occur in an <a class="reference internal" href="../reference/simple_stmts.html#import"><tt class="xref std std-keyword docutils literal"><span class="pre">import</span></tt></a> statement, in a call to the built-in functions <a class="reference internal" href="functions.html#exec" title="exec"><tt class="xref py py-func docutils literal"><span class="pre">exec()</span></tt></a> or <a class="reference internal" href="functions.html#eval" title="eval"><tt class="xref py py-func docutils literal"><span class="pre">eval()</span></tt></a>, or when reading the initial script or standard input (also interactively).</p> <p>Instances of this class have attributes <tt class="xref py py-attr docutils literal"><span class="pre">filename</span></tt>, <tt class="xref py py-attr docutils literal"><span class="pre">lineno</span></tt>, <tt class="xref py py-attr docutils literal"><span class="pre">offset</span></tt> and <tt class="xref py py-attr docutils literal"><span class="pre">text</span></tt> for easier access to the details. <a class="reference internal" href="functions.html#str" title="str"><tt class="xref py py-func docutils literal"><span class="pre">str()</span></tt></a> of the exception instance returns only the message.</p> </dd></dl> <dl class="exception"> <dt id="IndentationError"> <em class="property">exception </em><tt class="descname">IndentationError</tt><a class="headerlink" href="#IndentationError" title="Permalink to this definition">¶</a></dt> <dd><p>Base class for syntax errors related to incorrect indentation. This is a subclass of <a class="reference internal" href="#SyntaxError" title="SyntaxError"><tt class="xref py py-exc docutils literal"><span class="pre">SyntaxError</span></tt></a>.</p> </dd></dl> <dl class="exception"> <dt id="TabError"> <em class="property">exception </em><tt class="descname">TabError</tt><a class="headerlink" href="#TabError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when indentation contains an inconsistent use of tabs and spaces. This is a subclass of <a class="reference internal" href="#IndentationError" title="IndentationError"><tt class="xref py py-exc docutils literal"><span class="pre">IndentationError</span></tt></a>.</p> </dd></dl> <dl class="exception"> <dt id="SystemError"> <em class="property">exception </em><tt class="descname">SystemError</tt><a class="headerlink" href="#SystemError" title="Permalink to this definition">¶</a></dt> <dd><p>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).</p> <p>You should report this to the author or maintainer of your Python interpreter. Be sure to report the version of the Python interpreter (<tt class="docutils literal"><span class="pre">sys.version</span></tt>; 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.</p> </dd></dl> <dl class="exception"> <dt id="SystemExit"> <em class="property">exception </em><tt class="descname">SystemExit</tt><a class="headerlink" href="#SystemExit" title="Permalink to this definition">¶</a></dt> <dd><p>This exception is raised by the <a class="reference internal" href="sys.html#sys.exit" title="sys.exit"><tt class="xref py py-func docutils literal"><span class="pre">sys.exit()</span></tt></a> function. When it is not handled, the Python interpreter exits; no stack traceback is printed. If the associated value is an integer, it specifies the system exit status (passed to C’s <tt class="xref c c-func docutils literal"><span class="pre">exit()</span></tt> function); if it is <tt class="xref docutils literal"><span class="pre">None</span></tt>, 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.</p> <p>Instances have an attribute <a class="reference internal" href="code.html#module-code" title="code: Facilities to implement read-eval-print loops."><tt class="xref py py-attr docutils literal"><span class="pre">code</span></tt></a> which is set to the proposed exit status or error message (defaulting to <tt class="xref docutils literal"><span class="pre">None</span></tt>). Also, this exception derives directly from <a class="reference internal" href="#BaseException" title="BaseException"><tt class="xref py py-exc docutils literal"><span class="pre">BaseException</span></tt></a> and not <a class="reference internal" href="#Exception" title="Exception"><tt class="xref py py-exc docutils literal"><span class="pre">Exception</span></tt></a>, since it is not technically an error.</p> <p>A call to <a class="reference internal" href="sys.html#sys.exit" title="sys.exit"><tt class="xref py py-func docutils literal"><span class="pre">sys.exit()</span></tt></a> is translated into an exception so that clean-up handlers (<a class="reference internal" href="../reference/compound_stmts.html#finally"><tt class="xref std std-keyword docutils literal"><span class="pre">finally</span></tt></a> clauses of <a class="reference internal" href="../reference/compound_stmts.html#try"><tt class="xref std std-keyword docutils literal"><span class="pre">try</span></tt></a> statements) can be executed, and so that a debugger can execute a script without running the risk of losing control. The <a class="reference internal" href="os.html#os._exit" title="os._exit"><tt class="xref py py-func docutils literal"><span class="pre">os._exit()</span></tt></a> function can be used if it is absolutely positively necessary to exit immediately (for example, in the child process after a call to <tt class="xref py py-func docutils literal"><span class="pre">fork()</span></tt>).</p> <p>The exception inherits from <a class="reference internal" href="#BaseException" title="BaseException"><tt class="xref py py-exc docutils literal"><span class="pre">BaseException</span></tt></a> instead of <a class="reference internal" href="#Exception" title="Exception"><tt class="xref py py-exc docutils literal"><span class="pre">Exception</span></tt></a> so that it is not accidentally caught by code that catches <a class="reference internal" href="#Exception" title="Exception"><tt class="xref py py-exc docutils literal"><span class="pre">Exception</span></tt></a>. This allows the exception to properly propagate up and cause the interpreter to exit.</p> </dd></dl> <dl class="exception"> <dt id="TypeError"> <em class="property">exception </em><tt class="descname">TypeError</tt><a class="headerlink" href="#TypeError" title="Permalink to this definition">¶</a></dt> <dd><p>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.</p> </dd></dl> <dl class="exception"> <dt id="UnboundLocalError"> <em class="property">exception </em><tt class="descname">UnboundLocalError</tt><a class="headerlink" href="#UnboundLocalError" title="Permalink to this definition">¶</a></dt> <dd><p>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 <a class="reference internal" href="#NameError" title="NameError"><tt class="xref py py-exc docutils literal"><span class="pre">NameError</span></tt></a>.</p> </dd></dl> <dl class="exception"> <dt id="UnicodeError"> <em class="property">exception </em><tt class="descname">UnicodeError</tt><a class="headerlink" href="#UnicodeError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when a Unicode-related encoding or decoding error occurs. It is a subclass of <a class="reference internal" href="#ValueError" title="ValueError"><tt class="xref py py-exc docutils literal"><span class="pre">ValueError</span></tt></a>.</p> </dd></dl> <dl class="exception"> <dt id="UnicodeEncodeError"> <em class="property">exception </em><tt class="descname">UnicodeEncodeError</tt><a class="headerlink" href="#UnicodeEncodeError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when a Unicode-related error occurs during encoding. It is a subclass of <a class="reference internal" href="#UnicodeError" title="UnicodeError"><tt class="xref py py-exc docutils literal"><span class="pre">UnicodeError</span></tt></a>.</p> </dd></dl> <dl class="exception"> <dt id="UnicodeDecodeError"> <em class="property">exception </em><tt class="descname">UnicodeDecodeError</tt><a class="headerlink" href="#UnicodeDecodeError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when a Unicode-related error occurs during decoding. It is a subclass of <a class="reference internal" href="#UnicodeError" title="UnicodeError"><tt class="xref py py-exc docutils literal"><span class="pre">UnicodeError</span></tt></a>.</p> </dd></dl> <dl class="exception"> <dt id="UnicodeTranslateError"> <em class="property">exception </em><tt class="descname">UnicodeTranslateError</tt><a class="headerlink" href="#UnicodeTranslateError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when a Unicode-related error occurs during translating. It is a subclass of <a class="reference internal" href="#UnicodeError" title="UnicodeError"><tt class="xref py py-exc docutils literal"><span class="pre">UnicodeError</span></tt></a>.</p> </dd></dl> <dl class="exception"> <dt id="ValueError"> <em class="property">exception </em><tt class="descname">ValueError</tt><a class="headerlink" href="#ValueError" title="Permalink to this definition">¶</a></dt> <dd><p>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 <a class="reference internal" href="#IndexError" title="IndexError"><tt class="xref py py-exc docutils literal"><span class="pre">IndexError</span></tt></a>.</p> </dd></dl> <dl class="exception"> <dt id="VMSError"> <em class="property">exception </em><tt class="descname">VMSError</tt><a class="headerlink" href="#VMSError" title="Permalink to this definition">¶</a></dt> <dd><p>Only available on VMS. Raised when a VMS-specific error occurs.</p> </dd></dl> <dl class="exception"> <dt id="WindowsError"> <em class="property">exception </em><tt class="descname">WindowsError</tt><a class="headerlink" href="#WindowsError" title="Permalink to this definition">¶</a></dt> <dd><p>Raised when a Windows-specific error occurs or when the error number does not correspond to an <tt class="xref c c-data docutils literal"><span class="pre">errno</span></tt> value. The <tt class="xref py py-attr docutils literal"><span class="pre">winerror</span></tt> and <tt class="xref py py-attr docutils literal"><span class="pre">strerror</span></tt> values are created from the return values of the <tt class="xref c c-func docutils literal"><span class="pre">GetLastError()</span></tt> and <tt class="xref c c-func docutils literal"><span class="pre">FormatMessage()</span></tt> functions from the Windows Platform API. The <a class="reference internal" href="errno.html#module-errno" title="errno: Standard errno system symbols."><tt class="xref py py-attr docutils literal"><span class="pre">errno</span></tt></a> value maps the <tt class="xref py py-attr docutils literal"><span class="pre">winerror</span></tt> value to corresponding <tt class="docutils literal"><span class="pre">errno.h</span></tt> values. This is a subclass of <a class="reference internal" href="#OSError" title="OSError"><tt class="xref py py-exc docutils literal"><span class="pre">OSError</span></tt></a>.</p> </dd></dl> <dl class="exception"> <dt id="ZeroDivisionError"> <em class="property">exception </em><tt class="descname">ZeroDivisionError</tt><a class="headerlink" href="#ZeroDivisionError" title="Permalink to this definition">¶</a></dt> <dd><p>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.</p> </dd></dl> <p>The following exceptions are used as warning categories; see the <a class="reference internal" href="warnings.html#module-warnings" title="warnings: Issue warning messages and control their disposition."><tt class="xref py py-mod docutils literal"><span class="pre">warnings</span></tt></a> module for more information.</p> <dl class="exception"> <dt id="Warning"> <em class="property">exception </em><tt class="descname">Warning</tt><a class="headerlink" href="#Warning" title="Permalink to this definition">¶</a></dt> <dd><p>Base class for warning categories.</p> </dd></dl> <dl class="exception"> <dt id="UserWarning"> <em class="property">exception </em><tt class="descname">UserWarning</tt><a class="headerlink" href="#UserWarning" title="Permalink to this definition">¶</a></dt> <dd><p>Base class for warnings generated by user code.</p> </dd></dl> <dl class="exception"> <dt id="DeprecationWarning"> <em class="property">exception </em><tt class="descname">DeprecationWarning</tt><a class="headerlink" href="#DeprecationWarning" title="Permalink to this definition">¶</a></dt> <dd><p>Base class for warnings about deprecated features.</p> </dd></dl> <dl class="exception"> <dt id="PendingDeprecationWarning"> <em class="property">exception </em><tt class="descname">PendingDeprecationWarning</tt><a class="headerlink" href="#PendingDeprecationWarning" title="Permalink to this definition">¶</a></dt> <dd><p>Base class for warnings about features which will be deprecated in the future.</p> </dd></dl> <dl class="exception"> <dt id="SyntaxWarning"> <em class="property">exception </em><tt class="descname">SyntaxWarning</tt><a class="headerlink" href="#SyntaxWarning" title="Permalink to this definition">¶</a></dt> <dd><p>Base class for warnings about dubious syntax</p> </dd></dl> <dl class="exception"> <dt id="RuntimeWarning"> <em class="property">exception </em><tt class="descname">RuntimeWarning</tt><a class="headerlink" href="#RuntimeWarning" title="Permalink to this definition">¶</a></dt> <dd><p>Base class for warnings about dubious runtime behavior.</p> </dd></dl> <dl class="exception"> <dt id="FutureWarning"> <em class="property">exception </em><tt class="descname">FutureWarning</tt><a class="headerlink" href="#FutureWarning" title="Permalink to this definition">¶</a></dt> <dd><p>Base class for warnings about constructs that will change semantically in the future.</p> </dd></dl> <dl class="exception"> <dt id="ImportWarning"> <em class="property">exception </em><tt class="descname">ImportWarning</tt><a class="headerlink" href="#ImportWarning" title="Permalink to this definition">¶</a></dt> <dd><p>Base class for warnings about probable mistakes in module imports.</p> </dd></dl> <dl class="exception"> <dt id="UnicodeWarning"> <em class="property">exception </em><tt class="descname">UnicodeWarning</tt><a class="headerlink" href="#UnicodeWarning" title="Permalink to this definition">¶</a></dt> <dd><p>Base class for warnings related to Unicode.</p> </dd></dl> <dl class="exception"> <dt id="BytesWarning"> <em class="property">exception </em><tt class="descname">BytesWarning</tt><a class="headerlink" href="#BytesWarning" title="Permalink to this definition">¶</a></dt> <dd><p>Base class for warnings related to <a class="reference internal" href="functions.html#bytes" title="bytes"><tt class="xref py py-class docutils literal"><span class="pre">bytes</span></tt></a> and <tt class="xref py py-class docutils literal"><span class="pre">buffer</span></tt>.</p> </dd></dl> <dl class="exception"> <dt id="ResourceWarning"> <em class="property">exception </em><tt class="descname">ResourceWarning</tt><a class="headerlink" href="#ResourceWarning" title="Permalink to this definition">¶</a></dt> <dd><p>Base class for warnings related to resource usage.</p> <p class="versionadded"> <span class="versionmodified">New in version 3.2.</span></p> </dd></dl> <div class="section" id="exception-hierarchy"> <h2>5.1. Exception hierarchy<a class="headerlink" href="#exception-hierarchy" title="Permalink to this headline">¶</a></h2> <p>The class hierarchy for built-in exceptions is:</p> <div class="highlight-python3"><div class="highlight"><pre><span class="ne">BaseException</span> <span class="o">+--</span> <span class="ne">SystemExit</span> <span class="o">+--</span> <span class="ne">KeyboardInterrupt</span> <span class="o">+--</span> <span class="ne">GeneratorExit</span> <span class="o">+--</span> <span class="ne">Exception</span> <span class="o">+--</span> <span class="ne">StopIteration</span> <span class="o">+--</span> <span class="ne">ArithmeticError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">FloatingPointError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">OverflowError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">ZeroDivisionError</span> <span class="o">+--</span> <span class="ne">AssertionError</span> <span class="o">+--</span> <span class="ne">AttributeError</span> <span class="o">+--</span> <span class="ne">BufferError</span> <span class="o">+--</span> <span class="ne">EnvironmentError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">IOError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">OSError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">WindowsError</span> <span class="p">(</span><span class="n">Windows</span><span class="p">)</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">VMSError</span> <span class="p">(</span><span class="n">VMS</span><span class="p">)</span> <span class="o">+--</span> <span class="ne">EOFError</span> <span class="o">+--</span> <span class="ne">ImportError</span> <span class="o">+--</span> <span class="ne">LookupError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">IndexError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">KeyError</span> <span class="o">+--</span> <span class="ne">MemoryError</span> <span class="o">+--</span> <span class="ne">NameError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">UnboundLocalError</span> <span class="o">+--</span> <span class="ne">ReferenceError</span> <span class="o">+--</span> <span class="ne">RuntimeError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">NotImplementedError</span> <span class="o">+--</span> <span class="ne">SyntaxError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">IndentationError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">TabError</span> <span class="o">+--</span> <span class="ne">SystemError</span> <span class="o">+--</span> <span class="ne">TypeError</span> <span class="o">+--</span> <span class="ne">ValueError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">UnicodeError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">UnicodeDecodeError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">UnicodeEncodeError</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">UnicodeTranslateError</span> <span class="o">+--</span> <span class="ne">Warning</span> <span class="o">+--</span> <span class="ne">DeprecationWarning</span> <span class="o">+--</span> <span class="ne">PendingDeprecationWarning</span> <span class="o">+--</span> <span class="ne">RuntimeWarning</span> <span class="o">+--</span> <span class="ne">SyntaxWarning</span> <span class="o">+--</span> <span class="ne">UserWarning</span> <span class="o">+--</span> <span class="ne">FutureWarning</span> <span class="o">+--</span> <span class="ne">ImportWarning</span> <span class="o">+--</span> <span class="ne">UnicodeWarning</span> <span class="o">+--</span> <span class="ne">BytesWarning</span> <span class="o">+--</span> <span class="n">ResourceWarning</span> </pre></div> </div> </div> </div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <h3><a href="../contents.html">Table Of Contents</a></h3> <ul> <li><a class="reference internal" href="#">5. Built-in Exceptions</a><ul> <li><a class="reference internal" href="#exception-hierarchy">5.1. Exception hierarchy</a></li> </ul> </li> </ul> <h4>Previous topic</h4> <p class="topless"><a href="stdtypes.html" title="previous chapter">4. Built-in Types</a></p> <h4>Next topic</h4> <p class="topless"><a href="strings.html" title="next chapter">6. String Services</a></p> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../bugs.html">Report a Bug</a></li> <li><a href="../_sources/library/exceptions.txt" rel="nofollow">Show Source</a></li> </ul> <div id="searchbox" style="display: none"> <h3>Quick search</h3> <form class="search" action="../search.html" method="get"> <input type="text" name="q" size="18" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> <p class="searchtip" style="font-size: 90%"> Enter search terms or a module, class or function name. </p> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <div class="clearer"></div> </div> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="strings.html" title="6. String Services" >next</a> |</li> <li class="right" > <a href="stdtypes.html" title="4. Built-in Types" >previous</a> |</li> <li><img src="../_static/py.png" alt="" style="vertical-align: middle; margin-top: -1px"/></li> <li><a href="../index.html">Python v3.2.2 documentation</a> »</li> <li><a href="index.html" >The Python Standard Library</a> »</li> </ul> </div> <div class="footer"> © <a href="../copyright.html">Copyright</a> 1990-2011, Python Software Foundation. <br /> The Python Software Foundation is a non-profit corporation. <a href="http://www.python.org/psf/donations/">Please donate.</a> <br /> Last updated on Sep 04, 2011. <a href="../bugs.html">Found a bug</a>? <br /> Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7. </div> </body> </html>