Python запрашивает обработку исключений - PullRequest
32 голосов
/ 29 января 2012

Как обрабатывать исключения с запросами библиотеки Python?Например, как проверить, подключен ли компьютер к Интернету?

Когда я пытаюсь

try:
    requests.get('http://www.google.com')
except ConnectionError:
    # handle the exception

, выдается имя ошибки ConnectionError не определено

Ответы [ 4 ]

67 голосов
/ 29 января 2012

Предполагая, что вы сделали import requests, вы хотите requests.ConnectionError.ConnectionError является исключением, определенным requests.См. документацию API здесь.

Таким образом, код должен быть:

try:
   requests.get('http://www.google.com')
except requests.ConnectionError:
   # handle the exception
7 голосов
/ 22 февраля 2015

для ясности, то есть

except requests.ConnectionError:

НЕ

import requests.ConnectionError

Вы также можете поймать общее исключение (хотя это не рекомендуется) с

except Exception:
4 голосов
/ 06 сентября 2017

На самом деле, существует гораздо больше исключений, которые может генерировать requests.get(), чем просто ConnectionError. Вот некоторые, которые я видел в производстве:

from requests import ReadTimeout, ConnectTimeout, HTTPError, Timeout, ConnectionError

try:
    r = requests.get(url, timeout=6.0)
except (ConnectTimeout, HTTPError, ReadTimeout, Timeout, ConnectionError):
    continue
1 голос
/ 23 мая 2018

Включите модуль запросов, используя import requests.

Всегда полезно реализовать обработку исключений.Это не только помогает избежать неожиданного выхода из скрипта, но также может помочь регистрировать ошибки и информационные уведомления.При использовании запросов Python я предпочитаю перехватывать исключения вроде этого:

try:
    res = requests.get(adress,timeout=30)
except requests.ConnectionError as e:
    print("OOPS!! Connection Error. Make sure you are connected to Internet. Technical Details given below.\n")
    print(str(e))            
    continue
except requests.Timeout as e:
    print("OOPS!! Timeout Error")
    print(str(e))
    continue
except requests.RequestException as e:
    print("OOPS!! General Error")
    print(str(e))
    continue
except KeyboardInterrupt:
    print("Someone closed the program")
...