# 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` は `IOError` の代わりに `OSError` のサブクラスになりました。

exception `urllib.error.``HTTPError`

  `HTTPError` は例外 (`URLError` のサブクラス) ですが、同時に例外ではない file-like な戻り値を返す関数でもあります (`urlopen()` の戻り値と同じです)。これは、例えばサーバからの認証リクエストのように、変わった HTTP エラーを処理するのに役立ちます。

  `code`

    RFC 2616 に定義されているHTTPステータスコード。 この数値型の値は、 `http.server.BaseHTTPRequestHandler.responses` の辞書に登録されているコードに対応します。

  `reason`

    これは通常、このエラーの原因を説明する文字列です。

  `headers`

    `HTTPError` の原因となった HTTP リクエストの HTTP レスポンスヘッダ。

    バージョン 3.4 で追加.

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

  この例外は `urlretrieve()` 関数が、ダウンロードされたデータの量が予期した量 (Content-Length ヘッダで与えられる) よりも少ないことを検知した際に発生します。 `content` 属性には (恐らく途中までの) ダウンロードされたデータが格納されています。