# 21.9. `urllib.error` — urllib.request 引发的异常类

源代码： Lib/urllib/error.py

`urllib.error` 模块为 `urllib.request` 所引发的异常定义了异常类。 基础异常类是 `URLError`。

下列异常会被 `urllib.error` 按需引发：

exception `urllib.error.``URLError`

  处理程序在遇到问题时会引发此异常（或其派生的异常）。 它是 `OSError` 的一个子类。

  `reason`

    此错误的原因。 它可以是一个消息字符串或另一个异常实例。

  在 3.3 版更改: `URLError` 已被设为 `OSError` 而不是 `IOError` 的子类。

exception `urllib.error.``HTTPError`

  虽然是一个异常 (`URLError` 的一个子类)，`HTTPError` 也可以作为一个非异常的文件类返回值 (与 `urlopen()` 返所回的对象相同)。 这适用于处理特殊 HTTP 错误例如作为认证请求的时候。

  `code`

    一个 HTTP 状态码，具体定义见 RFC 2616。 这个数字值对应于存放在 `http.server.BaseHTTPRequestHandler.responses` 代码字典中的某个值。

  `reason`

    这通常是一个解释本次错误原因的字符串。

  `headers`

    导致了 `HTTPError` 的特定 HTTP 请求的 HTTP 响应头。

    3.4 新版功能.

exception `urllib.error.``ContentTooShortError`(msg, content)

  此异常会在 `urlretrieve()` 函数检测到已下载的数据量小于期待的数据量（由 Content-Length 头给定）时被引发。 `content` 属性中将存放已下载（可能被截断）的数据。