> **Источник:** https://python-all.ru/3.3/library/urllib.error.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 21.9. [`urllib.error`](https://python-all.ru/3.3/library/urllib.error.html#module-urllib.error) – классы исключений, вызываемые urllib.request

Модуль [`urllib.error`](https://python-all.ru/3.3/library/urllib.error.html#module-urllib.error) определяет классы исключений для исключений, вызываемых [`urllib.request`](https://python-all.ru/3.3/library/urllib.request.html#module-urllib.request). Базовым классом исключений является [`URLError`](https://python-all.ru/3.3/library/urllib.error.html#urllib.error.URLError).

Следующие исключения вызываются модулем [`urllib.error`](https://python-all.ru/3.3/library/urllib.error.html#module-urllib.error) в соответствующих случаях:

#### `exception urllib.error.URLError`

Обработчики вызывают это исключение (или производные от него) при возникновении проблемы. Оно является подклассом [`OSError`](https://python-all.ru/3.3/library/exceptions.html#OSError).

#### `reason`

Причина этой ошибки. Это может быть строка сообщения или другой экземпляр исключения.

Изменено в версии 3.3: [`URLError`](https://python-all.ru/3.3/library/urllib.error.html#urllib.error.URLError) стал подклассом [`OSError`](https://python-all.ru/3.3/library/exceptions.html#OSError) вместо [`IOError`](https://python-all.ru/3.3/library/exceptions.html#IOError).

#### `exception urllib.error.HTTPError`

Хотя [`HTTPError`](https://python-all.ru/3.3/library/urllib.error.html#urllib.error.HTTPError) и является исключением (подклассом [`URLError`](https://python-all.ru/3.3/library/urllib.error.html#urllib.error.URLError)), оно также может выступать в роли неисключительного файлоподобного возвращаемого значения (того же, что возвращает [`urlopen()`](https://python-all.ru/3.3/library/urllib.request.html#urllib.request.urlopen)). Это полезно при обработке нестандартных HTTP-ошибок, например, запросов на аутентификацию.

#### `code`

Код состояния HTTP, как определено в [RFC 2616](https://python-all.ru/3.3/library/urllib.error.html). Это числовое значение соответствует значению из словаря кодов, приведенного в [`http.server.BaseHTTPRequestHandler.responses`](https://python-all.ru/3.3/library/http.server.html#http.server.BaseHTTPRequestHandler.responses).

#### `reason`

Обычно это строка, поясняющая причину этой ошибки.

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

Это исключение вызывается, когда функция [`urlretrieve()`](https://python-all.ru/3.3/library/urllib.request.html#urllib.request.urlretrieve) обнаруживает, что объем загруженных данных меньше ожидаемого (заданного заголовком *Content-Length*). Атрибут `content` хранит загруженные (и предположительно усеченные) данные.
