:mod:`!urllib.error` --- Exception classes raised by urllib.request
===================================================================

.. module:: urllib.error
   :synopsis: Exception classes raised by urllib.request.

.. moduleauthor:: Jeremy Hylton <jeremy@alum.mit.edu>
.. sectionauthor:: Senthil Kumaran <orsenthil@gmail.com>

**Source code:** :source:`Lib/urllib/error.py`

--------------

The :mod:`urllib.error` module defines the exception classes for exceptions
raised by :mod:`urllib.request`.  The base exception class is :exc:`URLError`.

The following exceptions are raised by :mod:`urllib.error` as appropriate:

.. exception:: URLError

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

   .. attribute:: reason

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

   .. versionchanged:: 3.3
      :exc:`URLError` used to be a subtype of :exc:`IOError`, which is now an
      alias of :exc:`OSError`.


.. exception:: HTTPError(url, code, msg, hdrs, fp)

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

   .. attribute:: url

      Contains the request URL.
      An alias for *filename* attribute.

   .. attribute:: 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
      :attr:`http.server.BaseHTTPRequestHandler.responses`.

   .. attribute:: reason

      This is usually a string explaining the reason for this error.
      An alias for *msg* attribute.

   .. attribute:: headers

      The HTTP response headers for the HTTP request that caused the
      :exc:`HTTPError`.
      An alias for *hdrs* attribute.

      .. versionadded:: 3.4

   .. attribute:: fp

      A file-like object where the HTTP error body can be read from.

.. exception:: ContentTooShortError(msg, content)

   This exception is raised when the :func:`~urllib.request.urlretrieve`
   function detects that
   the amount of the downloaded data is less than the expected amount (given by
   the *Content-Length* header).

   .. attribute:: content

      The downloaded (and supposedly truncated) data.
