Files
hustoj/web/python-docs/library/exceptions.html
2025-03-09 17:10:56 +08:00

956 lines
87 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_CN">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>内置异常 &#8212; Python 3.8.20 文档</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<script src="../_static/translations.js"></script>
<script src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="在 Python 3.8.20 文档 中搜索"
href="../_static/opensearch.xml"/>
<link rel="author" title="关于这些文档" href="../about.html" />
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="copyright" title="版权所有" href="../copyright.html" />
<link rel="next" title="文本处理服务" href="text.html" />
<link rel="prev" title="内置类型" href="stdtypes.html" />
<link rel="canonical" href="https://docs.python.org/3/library/exceptions.html" />
<style>
@media only screen {
table.full-width-table {
width: 100%;
}
}
</style>
<link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
<script type="text/javascript" src="../_static/menu.js"></script>
</head>
<body>
<div class="mobile-nav">
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
<label for="menuToggler" class="toggler__label">
<span></span>
</label>
<nav class="nav-content" role="navigation">
<a href="https://www.python.org/" class="nav-logo">
<img src="../_static/py.svg" alt="Logo"/>
</a>
<div class="version_switcher_placeholder"></div>
<form role="search" class="search" action="../search.html" method="get">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
<path fill-rule="nonzero"
d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" fill="#444"></path>
</svg>
<input type="text" name="q" aria-label="快速搜索"/>
<input type="submit" value="转向"/>
</form>
</nav>
<div class="menu-wrapper">
<nav class="menu" role="navigation" aria-label="main navigation">
<div class="language_switcher_placeholder"></div>
<h3><a href="../contents.html">目录</a></h3>
<ul>
<li><a class="reference internal" href="#">内置异常</a><ul>
<li><a class="reference internal" href="#base-classes">基类</a></li>
<li><a class="reference internal" href="#concrete-exceptions">具体异常</a><ul>
<li><a class="reference internal" href="#os-exceptions">OS 异常</a></li>
</ul>
</li>
<li><a class="reference internal" href="#warnings">警告</a></li>
<li><a class="reference internal" href="#exception-hierarchy">异常层次结构</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="stdtypes.html"
title="上一章">内置类型</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="text.html"
title="下一章">文本处理服务</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/exceptions.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</nav>
</div>
</div>
<div id="outdated-warning" style="padding: .5em; text-align: center; background-color: #FFBABA; color: #6A0E0E;">
这个文档所针对的是一个已不再受支持的 Python 旧版本。
你应当升级版本,并阅读
<a href="/3/library/exceptions.html"> Python 当前稳定版本的文档</a>.
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
accesskey="I">索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="text.html" title="文本处理服务"
accesskey="N">下一页</a> |</li>
<li class="right" >
<a href="stdtypes.html" title="内置类型"
accesskey="P">上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Python 标准库</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="built-in-exceptions">
<span id="bltin-exceptions"></span><h1>内置异常<a class="headerlink" href="#built-in-exceptions" title="永久链接至标题"></a></h1>
<p id="index-0">在 Python 中,所有异常必须为一个派生自 <a class="reference internal" href="#BaseException" title="BaseException"><code class="xref py py-class docutils literal notranslate"><span class="pre">BaseException</span></code></a> 的类的实例。 在带有提及一个特定类的 <a class="reference internal" href="../reference/compound_stmts.html#except"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">except</span></code></a> 子句的 <a class="reference internal" href="../reference/compound_stmts.html#try"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">try</span></code></a> 语句中,该子句也会处理任何派生自该类的异常类(但不处理 <em></em> 所派生出的异常类)。 通过子类化创建的两个不相关异常类永远是不等效的,既使它们具有相同的名称。</p>
<p id="index-1">下面列出的内置异常可通过解释器或内置函数来生成。除非另有说明,它们都会具有一个提示导致错误详细原因的“关联值”。 这可以是一个字符串或由多个信息项(例如一个错误码和一个解释错误的字符串)组成的元组。 关联值通常会作为参数被传递给异常类的构造器。</p>
<p>用户代码可以引发内置异常。 这可被用于测试异常处理程序或报告错误条件,“就像” 在解释器引发了相同异常的情况时一样;但是请注意,没有任何机制能防止用户代码引发不适当的错误。</p>
<p>内置异常类可以被子类化以定义新的异常;鼓励程序员从 <a class="reference internal" href="#Exception" title="Exception"><code class="xref py py-exc docutils literal notranslate"><span class="pre">Exception</span></code></a> 类或它的某个子类而不是从 <a class="reference internal" href="#BaseException" title="BaseException"><code class="xref py py-exc docutils literal notranslate"><span class="pre">BaseException</span></code></a> 来派生新的异常。 关于定义异常的更多信息可以在 Python 教程的 <a class="reference internal" href="../tutorial/errors.html#tut-userexceptions"><span class="std std-ref">用户自定义异常</span></a> 部分查看。</p>
<p>当在 <a class="reference internal" href="../reference/compound_stmts.html#except"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">except</span></code></a><a class="reference internal" href="../reference/compound_stmts.html#finally"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">finally</span></code></a> 子句中引发(或重新引发)异常时,<code class="xref py py-attr docutils literal notranslate"><span class="pre">__context__</span></code> 会被自动设为所捕获的最后一个异常;如果新的异常未被处理,则最终显示的回溯信息将包括原始的异常和最后的异常。</p>
<p>当引发一个新的异常(而不是简单地使用 <code class="docutils literal notranslate"><span class="pre">raise</span></code> 来重新引发 当前在处理的异常)时,隐式的异常上下文可以通过使用带有 <a class="reference internal" href="../reference/simple_stmts.html#raise"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">raise</span></code></a><a class="reference internal" href="../reference/simple_stmts.html#raise"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">from</span></code></a> 子句来补充一个显式的原因:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="k">raise</span> <span class="n">new_exc</span> <span class="kn">from</span> <span class="nn">original_exc</span>
</pre></div>
</div>
<p>跟在 <a class="reference internal" href="../reference/simple_stmts.html#raise"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">from</span></code></a> 之后一表达式必须为一个异常或 <code class="docutils literal notranslate"><span class="pre">None</span></code>。 它将在所引发的异常上被设置为 <code class="xref py py-attr docutils literal notranslate"><span class="pre">__cause__</span></code>。 设置 <code class="xref py py-attr docutils literal notranslate"><span class="pre">__cause__</span></code> 还会隐式地将 <code class="xref py py-attr docutils literal notranslate"><span class="pre">__suppress_context__</span></code> 属性设为 <code class="docutils literal notranslate"><span class="pre">True</span></code>,这样使用 <code class="docutils literal notranslate"><span class="pre">raise</span> <span class="pre">new_exc</span> <span class="pre">from</span> <span class="pre">None</span></code> 可以有效地将旧异常替换为新异常来显示其目的 (例如将 <a class="reference internal" href="#KeyError" title="KeyError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">KeyError</span></code></a> 转换为 <a class="reference internal" href="#AttributeError" title="AttributeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">AttributeError</span></code></a>),同时让旧异常在 <code class="xref py py-attr docutils literal notranslate"><span class="pre">__context__</span></code> 中保持可用状态以便在调试时进行内省。</p>
<p>除了异常本身的回溯以外,默认的回溯还会显示这些串连的异常。 <code class="xref py py-attr docutils literal notranslate"><span class="pre">__cause__</span></code> 中的显式串连异常如果存在将总是显示。 <code class="xref py py-attr docutils literal notranslate"><span class="pre">__context__</span></code> 中的隐式串连异常仅在 <code class="xref py py-attr docutils literal notranslate"><span class="pre">__cause__</span></code><a class="reference internal" href="constants.html#None" title="None"><code class="xref py py-const docutils literal notranslate"><span class="pre">None</span></code></a> 并且 <code class="xref py py-attr docutils literal notranslate"><span class="pre">__suppress_context__</span></code> 为假值时显示。</p>
<p>不论在哪种情况下,异常本身总会在任何串连异常之后显示,以便回溯的最后一行总是显示所引发的最后一个异常。</p>
<section id="base-classes">
<h2>基类<a class="headerlink" href="#base-classes" title="永久链接至标题"></a></h2>
<p>下列异常主要被用作其他异常的基类。</p>
<dl class="exception">
<dt id="BaseException">
<em class="property">exception </em><code class="sig-name descname">BaseException</code><a class="headerlink" href="#BaseException" title="永久链接至目标"></a></dt>
<dd><p>所有内置异常的基类。 它不应该被用户自定义类直接继承 (这种情况请使用 <a class="reference internal" href="#Exception" title="Exception"><code class="xref py py-exc docutils literal notranslate"><span class="pre">Exception</span></code></a>)。 如果在此类的实例上调用 <a class="reference internal" href="stdtypes.html#str" title="str"><code class="xref py py-func docutils literal notranslate"><span class="pre">str()</span></code></a>,则会返回实例的参数表示,或者当没有参数时返回空字符串。</p>
<dl class="attribute">
<dt id="BaseException.args">
<code class="sig-name descname">args</code><a class="headerlink" href="#BaseException.args" title="永久链接至目标"></a></dt>
<dd><p>传给异常构造器的参数元组。 某些内置异常 (例如 <a class="reference internal" href="#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a>) 接受特定数量的参数并赋予此元组中的元素特殊的含义,而其他异常通常只接受一个给出错误信息的单独字符串。</p>
</dd></dl>
<dl class="method">
<dt id="BaseException.with_traceback">
<code class="sig-name descname">with_traceback</code><span class="sig-paren">(</span><em class="sig-param">tb</em><span class="sig-paren">)</span><a class="headerlink" href="#BaseException.with_traceback" title="永久链接至目标"></a></dt>
<dd><p>此方法将 <em>tb</em> 设为异常的新回溯信息并返回该异常对象。 它通常以如下的形式在异常处理程序中使用:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><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><code class="sig-name descname">Exception</code><a class="headerlink" href="#Exception" title="永久链接至目标"></a></dt>
<dd><p>所有内置的非系统退出类异常都派生自此类。 所有用户自定义异常也应当派生自此类。</p>
</dd></dl>
<dl class="exception">
<dt id="ArithmeticError">
<em class="property">exception </em><code class="sig-name descname">ArithmeticError</code><a class="headerlink" href="#ArithmeticError" title="永久链接至目标"></a></dt>
<dd><p>此基类用于派生针对各种算术类错误而引发的内置异常: <a class="reference internal" href="#OverflowError" title="OverflowError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OverflowError</span></code></a>, <a class="reference internal" href="#ZeroDivisionError" title="ZeroDivisionError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ZeroDivisionError</span></code></a>, <a class="reference internal" href="#FloatingPointError" title="FloatingPointError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">FloatingPointError</span></code></a></p>
</dd></dl>
<dl class="exception">
<dt id="BufferError">
<em class="property">exception </em><code class="sig-name descname">BufferError</code><a class="headerlink" href="#BufferError" title="永久链接至目标"></a></dt>
<dd><p>当与 <a class="reference internal" href="../c-api/buffer.html#bufferobjects"><span class="std std-ref">缓冲区</span></a> 相关的操作无法执行时将被引发。</p>
</dd></dl>
<dl class="exception">
<dt id="LookupError">
<em class="property">exception </em><code class="sig-name descname">LookupError</code><a class="headerlink" href="#LookupError" title="永久链接至目标"></a></dt>
<dd><p>此基类用于派生当映射或序列所使用的键或索引无效时引发的异常: <a class="reference internal" href="#IndexError" title="IndexError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">IndexError</span></code></a>, <a class="reference internal" href="#KeyError" title="KeyError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">KeyError</span></code></a>。 这可以通过 <a class="reference internal" href="codecs.html#codecs.lookup" title="codecs.lookup"><code class="xref py py-func docutils literal notranslate"><span class="pre">codecs.lookup()</span></code></a> 来直接引发。</p>
</dd></dl>
</section>
<section id="concrete-exceptions">
<h2>具体异常<a class="headerlink" href="#concrete-exceptions" title="永久链接至标题"></a></h2>
<p>以下异常属于经常被引发的异常。</p>
<dl class="exception">
<dt id="AssertionError">
<em class="property">exception </em><code class="sig-name descname">AssertionError</code><a class="headerlink" href="#AssertionError" title="永久链接至目标"></a></dt>
<dd><p id="index-2"><a class="reference internal" href="../reference/simple_stmts.html#assert"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">assert</span></code></a> 语句失败时将被引发。</p>
</dd></dl>
<dl class="exception">
<dt id="AttributeError">
<em class="property">exception </em><code class="sig-name descname">AttributeError</code><a class="headerlink" href="#AttributeError" title="永久链接至目标"></a></dt>
<dd><p>当属性引用 (参见 <a class="reference internal" href="../reference/expressions.html#attribute-references"><span class="std std-ref">属性引用</span></a>) 或赋值失败时将被引发。 (当一个对象根本不支持属性引用或属性赋值时则将引发 <a class="reference internal" href="#TypeError" title="TypeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TypeError</span></code></a>。)</p>
</dd></dl>
<dl class="exception">
<dt id="EOFError">
<em class="property">exception </em><code class="sig-name descname">EOFError</code><a class="headerlink" href="#EOFError" title="永久链接至目标"></a></dt>
<dd><p><a class="reference internal" href="functions.html#input" title="input"><code class="xref py py-func docutils literal notranslate"><span class="pre">input()</span></code></a> 函数未读取任何数据即达到文件结束条件 (EOF) 时将被引发。 (另外,<code class="xref py py-meth docutils literal notranslate"><span class="pre">io.IOBase.read()</span></code><a class="reference internal" href="io.html#io.IOBase.readline" title="io.IOBase.readline"><code class="xref py py-meth docutils literal notranslate"><span class="pre">io.IOBase.readline()</span></code></a> 方法在遇到 EOF 则将返回一个空字符串。)</p>
</dd></dl>
<dl class="exception">
<dt id="FloatingPointError">
<em class="property">exception </em><code class="sig-name descname">FloatingPointError</code><a class="headerlink" href="#FloatingPointError" title="永久链接至目标"></a></dt>
<dd><p>目前未被使用。</p>
</dd></dl>
<dl class="exception">
<dt id="GeneratorExit">
<em class="property">exception </em><code class="sig-name descname">GeneratorExit</code><a class="headerlink" href="#GeneratorExit" title="永久链接至目标"></a></dt>
<dd><p>当一个 <a class="reference internal" href="../glossary.html#term-generator"><span class="xref std std-term">generator</span></a><a class="reference internal" href="../glossary.html#term-coroutine"><span class="xref std std-term">coroutine</span></a> 被关闭时将被引发;参见 <a class="reference internal" href="../reference/expressions.html#generator.close" title="generator.close"><code class="xref py py-meth docutils literal notranslate"><span class="pre">generator.close()</span></code></a><a class="reference internal" href="../reference/datamodel.html#coroutine.close" title="coroutine.close"><code class="xref py py-meth docutils literal notranslate"><span class="pre">coroutine.close()</span></code></a>。 它直接继承自 <a class="reference internal" href="#BaseException" title="BaseException"><code class="xref py py-exc docutils literal notranslate"><span class="pre">BaseException</span></code></a> 而不是 <a class="reference internal" href="#Exception" title="Exception"><code class="xref py py-exc docutils literal notranslate"><span class="pre">Exception</span></code></a>,因为从技术上来说它并不是一个错误。</p>
</dd></dl>
<dl class="exception">
<dt id="ImportError">
<em class="property">exception </em><code class="sig-name descname">ImportError</code><a class="headerlink" href="#ImportError" title="永久链接至目标"></a></dt>
<dd><p><a class="reference internal" href="../reference/simple_stmts.html#import"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">import</span></code></a> 语句尝试加载模块遇到麻烦时将被引发。 并且当 <code class="docutils literal notranslate"><span class="pre">from</span> <span class="pre">...</span> <span class="pre">import</span></code> 中的 &quot;from list&quot; 存在无法找到的名称时也会被引发。</p>
<p><code class="xref py py-attr docutils literal notranslate"><span class="pre">name</span></code><code class="xref py py-attr docutils literal notranslate"><span class="pre">path</span></code> 属性可通过对构造器使用仅关键字参数来设定。 设定后它们将分别表示被尝试导入的模块名称与触发异常的任意文件所在路径。</p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.3 版更改: </span>添加了 <code class="xref py py-attr docutils literal notranslate"><span class="pre">name</span></code><code class="xref py py-attr docutils literal notranslate"><span class="pre">path</span></code> 属性。</p>
</div>
</dd></dl>
<dl class="exception">
<dt id="ModuleNotFoundError">
<em class="property">exception </em><code class="sig-name descname">ModuleNotFoundError</code><a class="headerlink" href="#ModuleNotFoundError" title="永久链接至目标"></a></dt>
<dd><p><a class="reference internal" href="#ImportError" title="ImportError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ImportError</span></code></a> 的子类,当一个模块无法被定位时将由 <a class="reference internal" href="../reference/simple_stmts.html#import"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">import</span></code></a> 引发。 当在 <a class="reference internal" href="sys.html#sys.modules" title="sys.modules"><code class="xref py py-data docutils literal notranslate"><span class="pre">sys.modules</span></code></a> 中找到 <code class="docutils literal notranslate"><span class="pre">None</span></code> 时也会被引发。</p>
<div class="versionadded">
<p><span class="versionmodified added">3.6 新版功能.</span></p>
</div>
</dd></dl>
<dl class="exception">
<dt id="IndexError">
<em class="property">exception </em><code class="sig-name descname">IndexError</code><a class="headerlink" href="#IndexError" title="永久链接至目标"></a></dt>
<dd><p>当序列抽取超出范围时将被引发。 (切片索引会被静默截短到允许的范围;如果指定索引不是整数则 <a class="reference internal" href="#TypeError" title="TypeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TypeError</span></code></a> 会被引发。)</p>
</dd></dl>
<dl class="exception">
<dt id="KeyError">
<em class="property">exception </em><code class="sig-name descname">KeyError</code><a class="headerlink" href="#KeyError" title="永久链接至目标"></a></dt>
<dd><p>当在现有键集合中找不到指定的映射(字典)键时将被引发。</p>
</dd></dl>
<dl class="exception">
<dt id="KeyboardInterrupt">
<em class="property">exception </em><code class="sig-name descname">KeyboardInterrupt</code><a class="headerlink" href="#KeyboardInterrupt" title="永久链接至目标"></a></dt>
<dd><p>当用户按下中断键 (通常为 <kbd class="kbd docutils literal notranslate">Control-C</kbd><kbd class="kbd docutils literal notranslate">Delete</kbd>) 时将被引发。 在执行期间,会定期检测中断信号。 该异常继承自 <a class="reference internal" href="#BaseException" title="BaseException"><code class="xref py py-exc docutils literal notranslate"><span class="pre">BaseException</span></code></a> 以确保不会被处理 <a class="reference internal" href="#Exception" title="Exception"><code class="xref py py-exc docutils literal notranslate"><span class="pre">Exception</span></code></a> 的代码意外捕获,这样可以避免退出解释器。</p>
</dd></dl>
<dl class="exception">
<dt id="MemoryError">
<em class="property">exception </em><code class="sig-name descname">MemoryError</code><a class="headerlink" href="#MemoryError" title="永久链接至目标"></a></dt>
<dd><p>当一个操作耗尽内存但情况仍可(通过删除一些对象)进行挽救时将被引发。 关联的值是一个字符串,指明是哪种(内部)操作耗尽了内存。 请注意由于底层的内存管理架构C 的 <code class="xref c c-func docutils literal notranslate"><span class="pre">malloc()</span></code> 函数),解释器也许并不总是能够从这种情况下完全恢复;但它毕竟可以引发一个异常,这样就能打印出栈回溯信息,以便找出导致问题的失控程序。</p>
</dd></dl>
<dl class="exception">
<dt id="NameError">
<em class="property">exception </em><code class="sig-name descname">NameError</code><a class="headerlink" href="#NameError" title="永久链接至目标"></a></dt>
<dd><p>当某个局部或全局名称未找到时将被引发。 此异常仅用于非限定名称。 关联的值是一条错误信息,其中包含未找到的名称。</p>
</dd></dl>
<dl class="exception">
<dt id="NotImplementedError">
<em class="property">exception </em><code class="sig-name descname">NotImplementedError</code><a class="headerlink" href="#NotImplementedError" title="永久链接至目标"></a></dt>
<dd><p>此异常派生自 <a class="reference internal" href="#RuntimeError" title="RuntimeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">RuntimeError</span></code></a>。 在用户自定义的基类中,抽象方法应当在其要求所派生类重写该方法,或是在其要求所开发的类提示具体实现尚待添加时引发此异常。</p>
<div class="admonition note">
<p class="admonition-title">注解</p>
<p>它不应当用来表示一个运算符或方法根本不能被支持 -- 在此情况下应当让特定运算符 / 方法保持未定义,或者在子类中将其设为 <a class="reference internal" href="constants.html#None" title="None"><code class="xref py py-data docutils literal notranslate"><span class="pre">None</span></code></a></p>
</div>
<div class="admonition note">
<p class="admonition-title">注解</p>
<p><code class="docutils literal notranslate"><span class="pre">NotImplementedError</span></code><code class="docutils literal notranslate"><span class="pre">NotImplemented</span></code> 不可互换,即使它们有相似的名称和用途。 请参阅 <a class="reference internal" href="constants.html#NotImplemented" title="NotImplemented"><code class="xref py py-data docutils literal notranslate"><span class="pre">NotImplemented</span></code></a> 了解有关何时使用它们的详细说明。</p>
</div>
</dd></dl>
<dl class="exception">
<dt id="OSError">
<em class="property">exception </em><code class="sig-name descname">OSError</code><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param">arg</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#OSError" title="永久链接至目标"></a></dt>
<dt>
<em class="property">exception </em><code class="sig-name descname">OSError</code><span class="sig-paren">(</span><em class="sig-param">errno</em>, <em class="sig-param">strerror</em><span class="optional">[</span>, <em class="sig-param">filename</em><span class="optional">[</span>, <em class="sig-param">winerror</em><span class="optional">[</span>, <em class="sig-param">filename2</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span></dt>
<dd><p id="index-3">此异常在一个系统函数返回系统相关的错误时将被引发,此类错误包括 I/O 操作失败例如 &quot;文件未找到&quot;&quot;磁盘已满&quot; 等(不包括非法参数类型或其他偶然性错误)。</p>
<p>构造器的第二种形式可设置如下所述的相应属性。 如果未指定这些属性则默认为 <a class="reference internal" href="constants.html#None" title="None"><code class="xref py py-const docutils literal notranslate"><span class="pre">None</span></code></a>。 为了能向下兼容,如果传入了三个参数,则 <a class="reference internal" href="#BaseException.args" title="BaseException.args"><code class="xref py py-attr docutils literal notranslate"><span class="pre">args</span></code></a> 属性将仅包含由前两个构造器参数组成的 2 元组。</p>
<p>构造器实际返回的往往是 <a class="reference internal" href="#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a> 的某个子类,如下文 <a class="reference internal" href="#os-exceptions">OS exceptions</a> 中所描述的。 具体的子类取决于最终的 <a class="reference internal" href="#OSError.errno" title="OSError.errno"><code class="xref py py-attr docutils literal notranslate"><span class="pre">errno</span></code></a> 值。 此行为仅在直接或通过别名来构造 <a class="reference internal" href="#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a> 时发生,并且在子类化时不会被继承。</p>
<dl class="attribute">
<dt id="OSError.errno">
<code class="sig-name descname">errno</code><a class="headerlink" href="#OSError.errno" title="永久链接至目标"></a></dt>
<dd><p>来自于 C 变量 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> 的数字错误码。</p>
</dd></dl>
<dl class="attribute">
<dt id="OSError.winerror">
<code class="sig-name descname">winerror</code><a class="headerlink" href="#OSError.winerror" title="永久链接至目标"></a></dt>
<dd><p>在 Windows 下,此参数将给出原生的 Windows 错误码。 而 <a class="reference internal" href="#OSError.errno" title="OSError.errno"><code class="xref py py-attr docutils literal notranslate"><span class="pre">errno</span></code></a> 属性将是该原生错误码在 POSIX 平台下的近似转换形式。</p>
<p>在 Windows 下,如果 <em>winerror</em> 构造器参数是一个整数,则 <a class="reference internal" href="#OSError.errno" title="OSError.errno"><code class="xref py py-attr docutils literal notranslate"><span class="pre">errno</span></code></a> 属性会根据 Windows 错误码来确定,而 <em>errno</em> 参数会被忽略。 在其他平台上,<em>winerror</em> 参数会被忽略,并且 <a class="reference internal" href="#OSError.winerror" title="OSError.winerror"><code class="xref py py-attr docutils literal notranslate"><span class="pre">winerror</span></code></a> 属性将不存在。</p>
</dd></dl>
<dl class="attribute">
<dt id="OSError.strerror">
<code class="sig-name descname">strerror</code><a class="headerlink" href="#OSError.strerror" title="永久链接至目标"></a></dt>
<dd><p>操作系统所提供的相应错误信息。 它在 POSIX 平台中由 C 函数 <code class="xref c c-func docutils literal notranslate"><span class="pre">perror()</span></code> 来格式化,在 Windows 中则是由 <code class="xref c c-func docutils literal notranslate"><span class="pre">FormatMessage()</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="OSError.filename">
<code class="sig-name descname">filename</code><a class="headerlink" href="#OSError.filename" title="永久链接至目标"></a></dt>
<dt id="OSError.filename2">
<code class="sig-name descname">filename2</code><a class="headerlink" href="#OSError.filename2" title="永久链接至目标"></a></dt>
<dd><p>对于与文件系统路径有关 (例如 <a class="reference internal" href="functions.html#open" title="open"><code class="xref py py-func docutils literal notranslate"><span class="pre">open()</span></code></a><a class="reference internal" href="os.html#os.unlink" title="os.unlink"><code class="xref py py-func docutils literal notranslate"><span class="pre">os.unlink()</span></code></a>) 的异常,<a class="reference internal" href="#OSError.filename" title="OSError.filename"><code class="xref py py-attr docutils literal notranslate"><span class="pre">filename</span></code></a> 是传给函数的文件名。 对于涉及两个文件系统路径的函数 (例如 <a class="reference internal" href="os.html#os.rename" title="os.rename"><code class="xref py py-func docutils literal notranslate"><span class="pre">os.rename()</span></code></a>)<a class="reference internal" href="#OSError.filename2" title="OSError.filename2"><code class="xref py py-attr docutils literal notranslate"><span class="pre">filename2</span></code></a> 将是传给函数的第二个文件名。</p>
</dd></dl>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.3 版更改: </span><a class="reference internal" href="#EnvironmentError" title="EnvironmentError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">EnvironmentError</span></code></a>, <a class="reference internal" href="#IOError" title="IOError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">IOError</span></code></a>, <a class="reference internal" href="#WindowsError" title="WindowsError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">WindowsError</span></code></a>, <a class="reference internal" href="socket.html#socket.error" title="socket.error"><code class="xref py py-exc docutils literal notranslate"><span class="pre">socket.error</span></code></a>, <a class="reference internal" href="select.html#select.error" title="select.error"><code class="xref py py-exc docutils literal notranslate"><span class="pre">select.error</span></code></a><code class="xref py py-exc docutils literal notranslate"><span class="pre">mmap.error</span></code> 已被合并到 <a class="reference internal" href="#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a>,构造器可能返回其中一个子类。</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.4 版更改: </span><a class="reference internal" href="#OSError.filename" title="OSError.filename"><code class="xref py py-attr docutils literal notranslate"><span class="pre">filename</span></code></a> 属性现在将是传给函数的原始文件名,而不是经过编码或基于文件系统编码进行解码之后的名称。 此外还添加了 <em>filename2</em> 构造器参数和属性。</p>
</div>
</dd></dl>
<dl class="exception">
<dt id="OverflowError">
<em class="property">exception </em><code class="sig-name descname">OverflowError</code><a class="headerlink" href="#OverflowError" title="永久链接至目标"></a></dt>
<dd><p>当算术运算的结果大到无法表示时将被引发。 这对整数来说不可能发生(宁可引发 <a class="reference internal" href="#MemoryError" title="MemoryError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">MemoryError</span></code></a> 也不会放弃尝试)。 但是出于历史原因,有时也会在整数超出要求范围的情况下引发 OverflowError。 因为在 C 中缺少对浮点异常处理的标准化,大多数浮点运算都不会做检查。</p>
</dd></dl>
<dl class="exception">
<dt id="RecursionError">
<em class="property">exception </em><code class="sig-name descname">RecursionError</code><a class="headerlink" href="#RecursionError" title="永久链接至目标"></a></dt>
<dd><p>此异常派生自 <a class="reference internal" href="#RuntimeError" title="RuntimeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">RuntimeError</span></code></a>。 它会在解释器检测发现超过最大递归深度 (参见 <a class="reference internal" href="sys.html#sys.getrecursionlimit" title="sys.getrecursionlimit"><code class="xref py py-func docutils literal notranslate"><span class="pre">sys.getrecursionlimit()</span></code></a>) 时被引发。</p>
<div class="versionadded">
<p><span class="versionmodified added">3.5 新版功能: </span>在此之前将只引发 <a class="reference internal" href="#RuntimeError" title="RuntimeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">RuntimeError</span></code></a></p>
</div>
</dd></dl>
<dl class="exception">
<dt id="ReferenceError">
<em class="property">exception </em><code class="sig-name descname">ReferenceError</code><a class="headerlink" href="#ReferenceError" title="永久链接至目标"></a></dt>
<dd><p>此异常将在使用 <a class="reference internal" href="weakref.html#weakref.proxy" title="weakref.proxy"><code class="xref py py-func docutils literal notranslate"><span class="pre">weakref.proxy()</span></code></a> 函数所创建的弱引用来访问该引用的某个已被作为垃圾回收的属性时被引发。 有关弱引用的更多信息请参阅 <a class="reference internal" href="weakref.html#module-weakref" title="weakref: Support for weak references and weak dictionaries."><code class="xref py py-mod docutils literal notranslate"><span class="pre">weakref</span></code></a> 模块。</p>
</dd></dl>
<dl class="exception">
<dt id="RuntimeError">
<em class="property">exception </em><code class="sig-name descname">RuntimeError</code><a class="headerlink" href="#RuntimeError" title="永久链接至目标"></a></dt>
<dd><p>当检测到一个不归属于任何其他类别的错误时将被引发。 关联的值是一个指明究竟发生了什么问题的字符串。</p>
</dd></dl>
<dl class="exception">
<dt id="StopIteration">
<em class="property">exception </em><code class="sig-name descname">StopIteration</code><a class="headerlink" href="#StopIteration" title="永久链接至目标"></a></dt>
<dd><p>由内置函数 <a class="reference internal" href="functions.html#next" title="next"><code class="xref py py-func docutils literal notranslate"><span class="pre">next()</span></code></a><a class="reference internal" href="../glossary.html#term-iterator"><span class="xref std std-term">iterator</span></a><a class="reference internal" href="stdtypes.html#iterator.__next__" title="iterator.__next__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__next__()</span></code></a> 方法所引发,用来表示该迭代器不能产生下一项。</p>
<p>该异常对象只有一个属性 <code class="xref py py-attr docutils literal notranslate"><span class="pre">value</span></code>,它在构造该异常时作为参数给出,默认值为 <a class="reference internal" href="constants.html#None" title="None"><code class="xref py py-const docutils literal notranslate"><span class="pre">None</span></code></a></p>
<p>当一个 <a class="reference internal" href="../glossary.html#term-generator"><span class="xref std std-term">generator</span></a><a class="reference internal" href="../glossary.html#term-coroutine"><span class="xref std std-term">coroutine</span></a> 函数返回时,将引发一个新的 <a class="reference internal" href="#StopIteration" title="StopIteration"><code class="xref py py-exc docutils literal notranslate"><span class="pre">StopIteration</span></code></a> 实例,函数返回的值将被用作异常构造器的 <code class="xref py py-attr docutils literal notranslate"><span class="pre">value</span></code> 形参。</p>
<p>如果某个生成器代码直接或间接地引发了 <a class="reference internal" href="#StopIteration" title="StopIteration"><code class="xref py py-exc docutils literal notranslate"><span class="pre">StopIteration</span></code></a>,它会被转换为 <a class="reference internal" href="#RuntimeError" title="RuntimeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">RuntimeError</span></code></a> (并将 <a class="reference internal" href="#StopIteration" title="StopIteration"><code class="xref py py-exc docutils literal notranslate"><span class="pre">StopIteration</span></code></a> 保留为导致新异常的原因)。</p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.3 版更改: </span>添加了 <code class="docutils literal notranslate"><span class="pre">value</span></code> 属性及其被生成器函数用作返回值的功能。</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.5 版更改: </span>引入了通过 <code class="docutils literal notranslate"><span class="pre">from</span> <span class="pre">__future__</span> <span class="pre">import</span> <span class="pre">generator_stop</span></code> 来实现 RuntimeError 转换,参见 <span class="target" id="index-12"></span><a class="pep reference external" href="https://www.python.org/dev/peps/pep-0479"><strong>PEP 479</strong></a></p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.7 版更改: </span>默认对所有代码启用 <span class="target" id="index-13"></span><a class="pep reference external" href="https://www.python.org/dev/peps/pep-0479"><strong>PEP 479</strong></a>: 在生成器中引发的 <a class="reference internal" href="#StopIteration" title="StopIteration"><code class="xref py py-exc docutils literal notranslate"><span class="pre">StopIteration</span></code></a> 错误将被转换为 <a class="reference internal" href="#RuntimeError" title="RuntimeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">RuntimeError</span></code></a></p>
</div>
</dd></dl>
<dl class="exception">
<dt id="StopAsyncIteration">
<em class="property">exception </em><code class="sig-name descname">StopAsyncIteration</code><a class="headerlink" href="#StopAsyncIteration" title="永久链接至目标"></a></dt>
<dd><p>必须由一个 <a class="reference internal" href="../glossary.html#term-asynchronous-iterator"><span class="xref std std-term">asynchronous iterator</span></a> 对象的 <a class="reference internal" href="../reference/datamodel.html#object.__anext__" title="object.__anext__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__anext__()</span></code></a> 方法来引发以停止迭代操作。</p>
<div class="versionadded">
<p><span class="versionmodified added">3.5 新版功能.</span></p>
</div>
</dd></dl>
<dl class="exception">
<dt id="SyntaxError">
<em class="property">exception </em><code class="sig-name descname">SyntaxError</code><a class="headerlink" href="#SyntaxError" title="永久链接至目标"></a></dt>
<dd><p>当解析器遇到语法错误时将被引发。 这可以发生在 <a class="reference internal" href="../reference/simple_stmts.html#import"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">import</span></code></a> 语句,对内置函数 <a class="reference internal" href="functions.html#exec" title="exec"><code class="xref py py-func docutils literal notranslate"><span class="pre">exec()</span></code></a><a class="reference internal" href="functions.html#eval" title="eval"><code class="xref py py-func docutils literal notranslate"><span class="pre">eval()</span></code></a> 的调用,或者读取原始脚本或标准输入(也包括交互模式)的时候。</p>
<p>异常实例的 <a class="reference internal" href="stdtypes.html#str" title="str"><code class="xref py py-func docutils literal notranslate"><span class="pre">str()</span></code></a> 只返回错误消息。</p>
<dl class="attribute">
<dt id="SyntaxError.filename">
<code class="sig-name descname">filename</code><a class="headerlink" href="#SyntaxError.filename" title="永久链接至目标"></a></dt>
<dd><p>发生语法错误所在文件的名称。</p>
</dd></dl>
<dl class="attribute">
<dt id="SyntaxError.lineno">
<code class="sig-name descname">lineno</code><a class="headerlink" href="#SyntaxError.lineno" title="永久链接至目标"></a></dt>
<dd><p>发生错误所在文件中的行号。 行号索引从 1 开始:文件中首行的 <code class="docutils literal notranslate"><span class="pre">lineno</span></code> 为 1。</p>
</dd></dl>
<dl class="attribute">
<dt id="SyntaxError.offset">
<code class="sig-name descname">offset</code><a class="headerlink" href="#SyntaxError.offset" title="永久链接至目标"></a></dt>
<dd><p>发生错误所在文件中的列号。 列号索引从 1 开始:行中首个字符的 <code class="docutils literal notranslate"><span class="pre">offset</span></code> 为 1。</p>
</dd></dl>
<dl class="attribute">
<dt id="SyntaxError.text">
<code class="sig-name descname">text</code><a class="headerlink" href="#SyntaxError.text" title="永久链接至目标"></a></dt>
<dd><p>错误所涉及的源代码文本。</p>
</dd></dl>
</dd></dl>
<dl class="exception">
<dt id="IndentationError">
<em class="property">exception </em><code class="sig-name descname">IndentationError</code><a class="headerlink" href="#IndentationError" title="永久链接至目标"></a></dt>
<dd><p>与不正确的缩进相关的语法错误的基类。 这是 <a class="reference internal" href="#SyntaxError" title="SyntaxError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">SyntaxError</span></code></a> 的一个子类。</p>
</dd></dl>
<dl class="exception">
<dt id="TabError">
<em class="property">exception </em><code class="sig-name descname">TabError</code><a class="headerlink" href="#TabError" title="永久链接至目标"></a></dt>
<dd><p>当缩进包含对制表符和空格符不一致的使用时将被引发。 这是 <a class="reference internal" href="#IndentationError" title="IndentationError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">IndentationError</span></code></a> 的一个子类。</p>
</dd></dl>
<dl class="exception">
<dt id="SystemError">
<em class="property">exception </em><code class="sig-name descname">SystemError</code><a class="headerlink" href="#SystemError" title="永久链接至目标"></a></dt>
<dd><p>当解释器发现内部错误,但情况看起来尚未严重到要放弃所有希望时将被引发。 关联的值是一个指明发生了什么问题的字符串(表示为低层级的符号)。</p>
<p>你应当将此问题报告给你所用 Python 解释器的作者或维护人员。 请确认报告 Python 解释器的版本号 (<code class="docutils literal notranslate"><span class="pre">sys.version</span></code>; 它也会在交互式 Python 会话开始时被打印出来),具体的错误消息(异常所关联的值)以及可能触发该错误的程序源码。</p>
</dd></dl>
<dl class="exception">
<dt id="SystemExit">
<em class="property">exception </em><code class="sig-name descname">SystemExit</code><a class="headerlink" href="#SystemExit" title="永久链接至目标"></a></dt>
<dd><p>此异常由 <a class="reference internal" href="sys.html#sys.exit" title="sys.exit"><code class="xref py py-func docutils literal notranslate"><span class="pre">sys.exit()</span></code></a> 函数引发。 它继承自 <a class="reference internal" href="#BaseException" title="BaseException"><code class="xref py py-exc docutils literal notranslate"><span class="pre">BaseException</span></code></a> 而不是 <a class="reference internal" href="#Exception" title="Exception"><code class="xref py py-exc docutils literal notranslate"><span class="pre">Exception</span></code></a> 以确保不会被处理 <a class="reference internal" href="#Exception" title="Exception"><code class="xref py py-exc docutils literal notranslate"><span class="pre">Exception</span></code></a> 的代码意外捕获。 这允许此异常正确地向上传播并导致解释器退出。 如果它未被处理,则 Python 解释器就将退出;不会打印任何栈回溯信息。 构造器接受的可选参数与传递给 <a class="reference internal" href="sys.html#sys.exit" title="sys.exit"><code class="xref py py-func docutils literal notranslate"><span class="pre">sys.exit()</span></code></a> 的相同。 如果该值为一个整数,则它指明系统退出状态码(会传递给 C 的 <code class="xref c c-func docutils literal notranslate"><span class="pre">exit()</span></code> 函数);如果该值为 <code class="docutils literal notranslate"><span class="pre">None</span></code>,则退出状态码为零;如果该值为其他类型(例如字符串),则会打印对象的值并将退出状态码设为一。</p>
<p><a class="reference internal" href="sys.html#sys.exit" title="sys.exit"><code class="xref py py-func docutils literal notranslate"><span class="pre">sys.exit()</span></code></a> 的调用会被转换为一个异常以便能执行清理处理程序 (<a class="reference internal" href="../reference/compound_stmts.html#try"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">try</span></code></a> 语句的 <a class="reference internal" href="../reference/compound_stmts.html#finally"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">finally</span></code></a> 子句),并且使得调试器可以执行一段脚本而不必冒失去控制的风险。 如果绝对确实地需要立即退出(例如在调用 <a class="reference internal" href="os.html#os.fork" title="os.fork"><code class="xref py py-func docutils literal notranslate"><span class="pre">os.fork()</span></code></a> 之后的子进程中)则可使用 <a class="reference internal" href="os.html#os._exit" title="os._exit"><code class="xref py py-func docutils literal notranslate"><span class="pre">os._exit()</span></code></a>.</p>
<dl class="attribute">
<dt id="SystemExit.code">
<code class="sig-name descname">code</code><a class="headerlink" href="#SystemExit.code" title="永久链接至目标"></a></dt>
<dd><p>传给构造器的退出状态码或错误信息(默认为 <code class="docutils literal notranslate"><span class="pre">None</span></code>。)</p>
</dd></dl>
</dd></dl>
<dl class="exception">
<dt id="TypeError">
<em class="property">exception </em><code class="sig-name descname">TypeError</code><a class="headerlink" href="#TypeError" title="永久链接至目标"></a></dt>
<dd><p>当一个操作或函数被应用于类型不适当的对象时将被引发。 关联的值是一个字符串,给出有关类型不匹配的详情。</p>
<p>此异常可以由用户代码引发,以表明尝试对某个对象进行的操作不受支持也不应当受支持。 如果某个对象应当支持给定的操作但尚未提供相应的实现,所要引发的适当异常应为 <a class="reference internal" href="#NotImplementedError" title="NotImplementedError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">NotImplementedError</span></code></a></p>
<p>传入参数的类型错误 (例如在要求 <a class="reference internal" href="functions.html#int" title="int"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a> 时却传入了 <a class="reference internal" href="stdtypes.html#list" title="list"><code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></a>) 应当导致 <a class="reference internal" href="#TypeError" title="TypeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TypeError</span></code></a>,但传入参数的值错误 (例如传入要求范围之外的数值) 则应当导致 <a class="reference internal" href="#ValueError" title="ValueError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ValueError</span></code></a></p>
</dd></dl>
<dl class="exception">
<dt id="UnboundLocalError">
<em class="property">exception </em><code class="sig-name descname">UnboundLocalError</code><a class="headerlink" href="#UnboundLocalError" title="永久链接至目标"></a></dt>
<dd><p>当在函数或方法中对某个局部变量进行引用,但该变量并未绑定任何值时将被引发。 此异常是 <a class="reference internal" href="#NameError" title="NameError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">NameError</span></code></a> 的一个子类。</p>
</dd></dl>
<dl class="exception">
<dt id="UnicodeError">
<em class="property">exception </em><code class="sig-name descname">UnicodeError</code><a class="headerlink" href="#UnicodeError" title="永久链接至目标"></a></dt>
<dd><p>当发生与 Unicode 相关的编码或解码错误时将被引发。 此异常是 <a class="reference internal" href="#ValueError" title="ValueError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ValueError</span></code></a> 的一个子类。</p>
<p><a class="reference internal" href="#UnicodeError" title="UnicodeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">UnicodeError</span></code></a> 具有一些描述编码或解码错误的属性。 例如 <code class="docutils literal notranslate"><span class="pre">err.object[err.start:err.end]</span></code> 会给出导致编解码器失败的特定无效输入。</p>
<dl class="attribute">
<dt id="UnicodeError.encoding">
<code class="sig-name descname">encoding</code><a class="headerlink" href="#UnicodeError.encoding" title="永久链接至目标"></a></dt>
<dd><p>引发错误的编码名称。</p>
</dd></dl>
<dl class="attribute">
<dt id="UnicodeError.reason">
<code class="sig-name descname">reason</code><a class="headerlink" href="#UnicodeError.reason" title="永久链接至目标"></a></dt>
<dd><p>描述特定编解码器错误的字符串。</p>
</dd></dl>
<dl class="attribute">
<dt id="UnicodeError.object">
<code class="sig-name descname">object</code><a class="headerlink" href="#UnicodeError.object" title="永久链接至目标"></a></dt>
<dd><p>编解码器试图要编码或解码的对象。</p>
</dd></dl>
<dl class="attribute">
<dt id="UnicodeError.start">
<code class="sig-name descname">start</code><a class="headerlink" href="#UnicodeError.start" title="永久链接至目标"></a></dt>
<dd><p><a class="reference internal" href="functions.html#object" title="object"><code class="xref py py-attr docutils literal notranslate"><span class="pre">object</span></code></a> 中无效数据的开始位置索引。</p>
</dd></dl>
<dl class="attribute">
<dt id="UnicodeError.end">
<code class="sig-name descname">end</code><a class="headerlink" href="#UnicodeError.end" title="永久链接至目标"></a></dt>
<dd><p><a class="reference internal" href="functions.html#object" title="object"><code class="xref py py-attr docutils literal notranslate"><span class="pre">object</span></code></a> 中无效数据的末尾位置索引(不含)。</p>
</dd></dl>
</dd></dl>
<dl class="exception">
<dt id="UnicodeEncodeError">
<em class="property">exception </em><code class="sig-name descname">UnicodeEncodeError</code><a class="headerlink" href="#UnicodeEncodeError" title="永久链接至目标"></a></dt>
<dd><p>当在编码过程中发生与 Unicode 相关的错误时将被引发。 此异常是 <a class="reference internal" href="#UnicodeError" title="UnicodeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">UnicodeError</span></code></a> 的一个子类。</p>
</dd></dl>
<dl class="exception">
<dt id="UnicodeDecodeError">
<em class="property">exception </em><code class="sig-name descname">UnicodeDecodeError</code><a class="headerlink" href="#UnicodeDecodeError" title="永久链接至目标"></a></dt>
<dd><p>当在解码过程中发生与 Unicode 相关的错误时将被引发。 此异常是 <a class="reference internal" href="#UnicodeError" title="UnicodeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">UnicodeError</span></code></a> 的一个子类。</p>
</dd></dl>
<dl class="exception">
<dt id="UnicodeTranslateError">
<em class="property">exception </em><code class="sig-name descname">UnicodeTranslateError</code><a class="headerlink" href="#UnicodeTranslateError" title="永久链接至目标"></a></dt>
<dd><p>在转写过程中发生与 Unicode 相关的错误时将被引发。 此异常是 <a class="reference internal" href="#UnicodeError" title="UnicodeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">UnicodeError</span></code></a> 的一个子类。</p>
</dd></dl>
<dl class="exception">
<dt id="ValueError">
<em class="property">exception </em><code class="sig-name descname">ValueError</code><a class="headerlink" href="#ValueError" title="永久链接至目标"></a></dt>
<dd><p>当操作或函数接收到具有正确类型但值不适合的参数,并且情况不能用更精确的异常例如 <a class="reference internal" href="#IndexError" title="IndexError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">IndexError</span></code></a> 来描述时将被引发。</p>
</dd></dl>
<dl class="exception">
<dt id="ZeroDivisionError">
<em class="property">exception </em><code class="sig-name descname">ZeroDivisionError</code><a class="headerlink" href="#ZeroDivisionError" title="永久链接至目标"></a></dt>
<dd><p>当除法或取余运算的第二个参数为零时将被引发。 关联的值是一个字符串,指明操作数和运算的类型。</p>
</dd></dl>
<p>下列异常被保留以与之前的版本相兼容;从 Python 3.3 开始,它们都是 <a class="reference internal" href="#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a> 的别名。</p>
<dl class="exception">
<dt id="EnvironmentError">
<em class="property">exception </em><code class="sig-name descname">EnvironmentError</code><a class="headerlink" href="#EnvironmentError" title="永久链接至目标"></a></dt>
<dd></dd></dl>
<dl class="exception">
<dt id="IOError">
<em class="property">exception </em><code class="sig-name descname">IOError</code><a class="headerlink" href="#IOError" title="永久链接至目标"></a></dt>
<dd></dd></dl>
<dl class="exception">
<dt id="WindowsError">
<em class="property">exception </em><code class="sig-name descname">WindowsError</code><a class="headerlink" href="#WindowsError" title="永久链接至目标"></a></dt>
<dd><p>限在 Windows 中可用。</p>
</dd></dl>
<section id="os-exceptions">
<h3>OS 异常<a class="headerlink" href="#os-exceptions" title="永久链接至标题"></a></h3>
<p>下列异常均为 <a class="reference internal" href="#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a> 的子类,它们将根据系统错误代码被引发。</p>
<dl class="exception">
<dt id="BlockingIOError">
<em class="property">exception </em><code class="sig-name descname">BlockingIOError</code><a class="headerlink" href="#BlockingIOError" title="永久链接至目标"></a></dt>
<dd><p>当一个操作会被某个设置为非阻塞操作的对象(例如套接字)所阻塞时将被引发。 对应于 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> <code class="docutils literal notranslate"><span class="pre">EAGAIN</span></code>, <code class="docutils literal notranslate"><span class="pre">EALREADY</span></code>, <code class="docutils literal notranslate"><span class="pre">EWOULDBLOCK</span></code><code class="docutils literal notranslate"><span class="pre">EINPROGRESS</span></code></p>
<p>除了 <a class="reference internal" href="#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a> 已有的属性,<a class="reference internal" href="#BlockingIOError" title="BlockingIOError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">BlockingIOError</span></code></a> 还有一个额外属性:</p>
<dl class="attribute">
<dt id="BlockingIOError.characters_written">
<code class="sig-name descname">characters_written</code><a class="headerlink" href="#BlockingIOError.characters_written" title="永久链接至目标"></a></dt>
<dd><p>一个整数,表示在被阻塞前已写入到流的字符数。 当使用来自 <a class="reference internal" href="io.html#module-io" title="io: Core tools for working with streams."><code class="xref py py-mod docutils literal notranslate"><span class="pre">io</span></code></a> 模块的带缓冲 I/O 类时此属性可用。</p>
</dd></dl>
</dd></dl>
<dl class="exception">
<dt id="ChildProcessError">
<em class="property">exception </em><code class="sig-name descname">ChildProcessError</code><a class="headerlink" href="#ChildProcessError" title="永久链接至目标"></a></dt>
<dd><p>当一个子进程上的操作失败时将被引发。 对应于 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> <code class="docutils literal notranslate"><span class="pre">ECHILD</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="ConnectionError">
<em class="property">exception </em><code class="sig-name descname">ConnectionError</code><a class="headerlink" href="#ConnectionError" title="永久链接至目标"></a></dt>
<dd><p>与连接相关问题的基类。</p>
<p>其子类有 <a class="reference internal" href="#BrokenPipeError" title="BrokenPipeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">BrokenPipeError</span></code></a>, <a class="reference internal" href="#ConnectionAbortedError" title="ConnectionAbortedError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ConnectionAbortedError</span></code></a>, <a class="reference internal" href="#ConnectionRefusedError" title="ConnectionRefusedError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ConnectionRefusedError</span></code></a><a class="reference internal" href="#ConnectionResetError" title="ConnectionResetError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ConnectionResetError</span></code></a></p>
</dd></dl>
<dl class="exception">
<dt id="BrokenPipeError">
<em class="property">exception </em><code class="sig-name descname">BrokenPipeError</code><a class="headerlink" href="#BrokenPipeError" title="永久链接至目标"></a></dt>
<dd><p><a class="reference internal" href="#ConnectionError" title="ConnectionError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ConnectionError</span></code></a> 的子类,当试图写入另一端已被关闭的管道,或是试图写入已关闭写入的套接字时将被引发。 对应于 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> <code class="docutils literal notranslate"><span class="pre">EPIPE</span></code><code class="docutils literal notranslate"><span class="pre">ESHUTDOWN</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="ConnectionAbortedError">
<em class="property">exception </em><code class="sig-name descname">ConnectionAbortedError</code><a class="headerlink" href="#ConnectionAbortedError" title="永久链接至目标"></a></dt>
<dd><p><a class="reference internal" href="#ConnectionError" title="ConnectionError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ConnectionError</span></code></a> 的子类,当连接尝试被对端中止时将被引发。 对应于 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> <code class="docutils literal notranslate"><span class="pre">ECONNABORTED</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="ConnectionRefusedError">
<em class="property">exception </em><code class="sig-name descname">ConnectionRefusedError</code><a class="headerlink" href="#ConnectionRefusedError" title="永久链接至目标"></a></dt>
<dd><p><a class="reference internal" href="#ConnectionError" title="ConnectionError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ConnectionError</span></code></a> 的子类,当连接尝试被对端拒绝时将被引发。 对应于 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> <code class="docutils literal notranslate"><span class="pre">ECONNREFUSED</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="ConnectionResetError">
<em class="property">exception </em><code class="sig-name descname">ConnectionResetError</code><a class="headerlink" href="#ConnectionResetError" title="永久链接至目标"></a></dt>
<dd><p><a class="reference internal" href="#ConnectionError" title="ConnectionError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ConnectionError</span></code></a> 的子类,当连接被对端重置时将被引发。 对应于 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> <code class="docutils literal notranslate"><span class="pre">ECONNRESET</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="FileExistsError">
<em class="property">exception </em><code class="sig-name descname">FileExistsError</code><a class="headerlink" href="#FileExistsError" title="永久链接至目标"></a></dt>
<dd><p>当试图创建一个已存在的文件或目录时将被引发。 对应于 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> <code class="docutils literal notranslate"><span class="pre">EEXIST</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="FileNotFoundError">
<em class="property">exception </em><code class="sig-name descname">FileNotFoundError</code><a class="headerlink" href="#FileNotFoundError" title="永久链接至目标"></a></dt>
<dd><p>当所请求的文件或目录不存在时将被引发。 对应于 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> <code class="docutils literal notranslate"><span class="pre">ENOENT</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="InterruptedError">
<em class="property">exception </em><code class="sig-name descname">InterruptedError</code><a class="headerlink" href="#InterruptedError" title="永久链接至目标"></a></dt>
<dd><p>当系统调用被输入信号中断时将被引发。 对应于 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> <a class="reference internal" href="errno.html#errno.EINTR" title="errno.EINTR"><code class="xref py py-data docutils literal notranslate"><span class="pre">EINTR</span></code></a></p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.5 版更改: </span>当系统调用被某个信号中断时Python 现在会重试系统调用,除非该信号的处理程序引发了其它异常 (原理参见 <span class="target" id="index-14"></span><a class="pep reference external" href="https://www.python.org/dev/peps/pep-0475"><strong>PEP 475</strong></a>) 而不是引发 <a class="reference internal" href="#InterruptedError" title="InterruptedError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">InterruptedError</span></code></a></p>
</div>
</dd></dl>
<dl class="exception">
<dt id="IsADirectoryError">
<em class="property">exception </em><code class="sig-name descname">IsADirectoryError</code><a class="headerlink" href="#IsADirectoryError" title="永久链接至目标"></a></dt>
<dd><p>当请求对一个目录执行文件操作 (例如 <a class="reference internal" href="os.html#os.remove" title="os.remove"><code class="xref py py-func docutils literal notranslate"><span class="pre">os.remove()</span></code></a>) 将被引发。 对应于 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> <code class="docutils literal notranslate"><span class="pre">EISDIR</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="NotADirectoryError">
<em class="property">exception </em><code class="sig-name descname">NotADirectoryError</code><a class="headerlink" href="#NotADirectoryError" title="永久链接至目标"></a></dt>
<dd><p>当请求对一个非目录对象执行目录操作 (例如 <a class="reference internal" href="os.html#os.listdir" title="os.listdir"><code class="xref py py-func docutils literal notranslate"><span class="pre">os.listdir()</span></code></a>) 时将被引发。 对应于 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> <code class="docutils literal notranslate"><span class="pre">ENOTDIR</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="PermissionError">
<em class="property">exception </em><code class="sig-name descname">PermissionError</code><a class="headerlink" href="#PermissionError" title="永久链接至目标"></a></dt>
<dd><p>当在没有足够操作权限的情况下试图执行某个操作时将被引发 —— 例如缺少文件系统权限。 对应于 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> <code class="docutils literal notranslate"><span class="pre">EACCES</span></code><code class="docutils literal notranslate"><span class="pre">EPERM</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="ProcessLookupError">
<em class="property">exception </em><code class="sig-name descname">ProcessLookupError</code><a class="headerlink" href="#ProcessLookupError" title="永久链接至目标"></a></dt>
<dd><p>当给定的进程不存在时将被引发。 对应于 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> <code class="docutils literal notranslate"><span class="pre">ESRCH</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="TimeoutError">
<em class="property">exception </em><code class="sig-name descname">TimeoutError</code><a class="headerlink" href="#TimeoutError" title="永久链接至目标"></a></dt>
<dd><p>当一个系统函数发生系统级超时的情况下将被引发。 对应于 <code class="xref c c-data docutils literal notranslate"><span class="pre">errno</span></code> <code class="docutils literal notranslate"><span class="pre">ETIMEDOUT</span></code></p>
</dd></dl>
<div class="versionadded">
<p><span class="versionmodified added">3.3 新版功能: </span>添加了以上所有 <a class="reference internal" href="#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a> 的子类。</p>
</div>
<div class="admonition seealso">
<p class="admonition-title">参见</p>
<p><span class="target" id="index-15"></span><a class="pep reference external" href="https://www.python.org/dev/peps/pep-3151"><strong>PEP 3151</strong></a> - 重写 OS 和 IO 异常的层次结构</p>
</div>
</section>
</section>
<section id="warnings">
<span id="warning-categories-as-exceptions"></span><h2>警告<a class="headerlink" href="#warnings" title="永久链接至标题"></a></h2>
<p>下列异常被用作警告类别;请参阅 <a class="reference internal" href="warnings.html#warning-categories"><span class="std std-ref">警告类别</span></a> 文档了解详情。</p>
<dl class="exception">
<dt id="Warning">
<em class="property">exception </em><code class="sig-name descname">Warning</code><a class="headerlink" href="#Warning" title="永久链接至目标"></a></dt>
<dd><p>警告类别的基类。</p>
</dd></dl>
<dl class="exception">
<dt id="UserWarning">
<em class="property">exception </em><code class="sig-name descname">UserWarning</code><a class="headerlink" href="#UserWarning" title="永久链接至目标"></a></dt>
<dd><p>用户代码所产生警告的基类。</p>
</dd></dl>
<dl class="exception">
<dt id="DeprecationWarning">
<em class="property">exception </em><code class="sig-name descname">DeprecationWarning</code><a class="headerlink" href="#DeprecationWarning" title="永久链接至目标"></a></dt>
<dd><p>如果所发出的警告是针对其他 Python 开发者的,则以此作为与已弃用特性相关警告的基类。</p>
</dd></dl>
<dl class="exception">
<dt id="PendingDeprecationWarning">
<em class="property">exception </em><code class="sig-name descname">PendingDeprecationWarning</code><a class="headerlink" href="#PendingDeprecationWarning" title="永久链接至目标"></a></dt>
<dd><p>对于已过时并预计在未来弃用,但目前尚未弃用的特性相关警告的基类。</p>
<p>这个类很少被使用,因为针对未来可能的弃用发出警告的做法并不常见,而针对当前已有的弃用则推荐使用 <a class="reference internal" href="#DeprecationWarning" title="DeprecationWarning"><code class="xref py py-exc docutils literal notranslate"><span class="pre">DeprecationWarning</span></code></a></p>
</dd></dl>
<dl class="exception">
<dt id="SyntaxWarning">
<em class="property">exception </em><code class="sig-name descname">SyntaxWarning</code><a class="headerlink" href="#SyntaxWarning" title="永久链接至目标"></a></dt>
<dd><p>与模糊的语法相关的警告的基类。</p>
</dd></dl>
<dl class="exception">
<dt id="RuntimeWarning">
<em class="property">exception </em><code class="sig-name descname">RuntimeWarning</code><a class="headerlink" href="#RuntimeWarning" title="永久链接至目标"></a></dt>
<dd><p>与模糊的运行时行为相关的警告的基类。</p>
</dd></dl>
<dl class="exception">
<dt id="FutureWarning">
<em class="property">exception </em><code class="sig-name descname">FutureWarning</code><a class="headerlink" href="#FutureWarning" title="永久链接至目标"></a></dt>
<dd><p>如果所发出的警告是针对以 Python 所编写应用的最终用户的,则以此作为与已弃用特性相关警告的基类。</p>
</dd></dl>
<dl class="exception">
<dt id="ImportWarning">
<em class="property">exception </em><code class="sig-name descname">ImportWarning</code><a class="headerlink" href="#ImportWarning" title="永久链接至目标"></a></dt>
<dd><p>与在模块导入中可能的错误相关的警告的基类。</p>
</dd></dl>
<dl class="exception">
<dt id="UnicodeWarning">
<em class="property">exception </em><code class="sig-name descname">UnicodeWarning</code><a class="headerlink" href="#UnicodeWarning" title="永久链接至目标"></a></dt>
<dd><p>与 Unicode 相关的警告的基类。</p>
</dd></dl>
<dl class="exception">
<dt id="BytesWarning">
<em class="property">exception </em><code class="sig-name descname">BytesWarning</code><a class="headerlink" href="#BytesWarning" title="永久链接至目标"></a></dt>
<dd><p><a class="reference internal" href="stdtypes.html#bytes" title="bytes"><code class="xref py py-class docutils literal notranslate"><span class="pre">bytes</span></code></a><a class="reference internal" href="stdtypes.html#bytearray" title="bytearray"><code class="xref py py-class docutils literal notranslate"><span class="pre">bytearray</span></code></a> 相关的警告的基类。</p>
</dd></dl>
<dl class="exception">
<dt id="ResourceWarning">
<em class="property">exception </em><code class="sig-name descname">ResourceWarning</code><a class="headerlink" href="#ResourceWarning" title="永久链接至目标"></a></dt>
<dd><p>与资源使用相关的警告的基类。 会被默认的警告过滤器忽略。</p>
<div class="versionadded">
<p><span class="versionmodified added">3.2 新版功能.</span></p>
</div>
</dd></dl>
</section>
<section id="exception-hierarchy">
<h2>异常层次结构<a class="headerlink" href="#exception-hierarchy" title="永久链接至标题"></a></h2>
<p>内置异常的类层级结构如下:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><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">StopAsyncIteration</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">EOFError</span>
<span class="o">+--</span> <span class="ne">ImportError</span>
<span class="o">|</span> <span class="o">+--</span> <span class="ne">ModuleNotFoundError</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">OSError</span>
<span class="o">|</span> <span class="o">+--</span> <span class="ne">BlockingIOError</span>
<span class="o">|</span> <span class="o">+--</span> <span class="ne">ChildProcessError</span>
<span class="o">|</span> <span class="o">+--</span> <span class="ne">ConnectionError</span>
<span class="o">|</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">BrokenPipeError</span>
<span class="o">|</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">ConnectionAbortedError</span>
<span class="o">|</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">ConnectionRefusedError</span>
<span class="o">|</span> <span class="o">|</span> <span class="o">+--</span> <span class="ne">ConnectionResetError</span>
<span class="o">|</span> <span class="o">+--</span> <span class="ne">FileExistsError</span>
<span class="o">|</span> <span class="o">+--</span> <span class="ne">FileNotFoundError</span>
<span class="o">|</span> <span class="o">+--</span> <span class="ne">InterruptedError</span>
<span class="o">|</span> <span class="o">+--</span> <span class="ne">IsADirectoryError</span>
<span class="o">|</span> <span class="o">+--</span> <span class="ne">NotADirectoryError</span>
<span class="o">|</span> <span class="o">+--</span> <span class="ne">PermissionError</span>
<span class="o">|</span> <span class="o">+--</span> <span class="ne">ProcessLookupError</span>
<span class="o">|</span> <span class="o">+--</span> <span class="ne">TimeoutError</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="o">+--</span> <span class="ne">RecursionError</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="ne">ResourceWarning</span>
</pre></div>
</div>
</section>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="../contents.html">目录</a></h3>
<ul>
<li><a class="reference internal" href="#">内置异常</a><ul>
<li><a class="reference internal" href="#base-classes">基类</a></li>
<li><a class="reference internal" href="#concrete-exceptions">具体异常</a><ul>
<li><a class="reference internal" href="#os-exceptions">OS 异常</a></li>
</ul>
</li>
<li><a class="reference internal" href="#warnings">警告</a></li>
<li><a class="reference internal" href="#exception-hierarchy">异常层次结构</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="stdtypes.html"
title="上一章">内置类型</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="text.html"
title="下一章">文本处理服务</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/exceptions.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
>索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="text.html" title="文本处理服务"
>下一页</a> |</li>
<li class="right" >
<a href="stdtypes.html" title="内置类型"
>上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">版权所有</a> 2001-2024, Python Software Foundation.
<br />
This page is licensed under the Python Software Foundation License Version 2.
<br />
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
<br />
<br />
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br />
<br />
最后更新于 12月 09, 2024.
<a href="https://docs.python.org/3/bugs.html">Found a bug</a>?
<br />
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 2.4.4.
</div>
</body>
</html>