21.9. "urllib.error" --- urllib.request 引发的异常类
****************************************************

**源代码：** Lib/urllib/error.py

======================================================================

The "urllib.error" module defines the exception classes for exceptions
raised by "urllib.request".  The base exception class is "URLError".

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

exception urllib.error.URLError

   The handlers raise this exception (or derived exceptions) when they
   run into a problem.  It is a subclass of "OSError".

   reason

      The reason for this error.  It can be a message string or
      another exception instance.

   在 3.3 版更改: "URLError" has been made a subclass of "OSError"
   instead of "IOError".

exception urllib.error.HTTPError

   Though being an exception (a subclass of "URLError"), an
   "HTTPError" can also function as a non-exceptional file-like return
   value (the same thing that "urlopen()" returns).  This is useful
   when handling exotic HTTP errors, such as requests for
   authentication.

   code

      An HTTP status code as defined in **RFC 2616**.  This numeric
      value corresponds to a value found in the dictionary of codes as
      found in "http.server.BaseHTTPRequestHandler.responses".

   reason

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

   headers

      The HTTP response headers for the HTTP request that caused the
      "HTTPError".

      3.4 新版功能.

exception urllib.error.ContentTooShortError(msg, content)

   This exception is raised when the "urlretrieve()" function detects
   that the amount of the downloaded data is less than the expected
   amount (given by the *Content-Length* header).  The "content"
   attribute stores the downloaded (and supposedly truncated) data.
