Исключений питон, обработка запросов

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

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

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

это дает мне имя ошибка ConnectionError Не определен

4 ответов


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

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

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

для ясности, что это

except requests.ConnectionError:

не

import requests.ConnectionError

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

except Exception:

на самом деле, есть гораздо больше исключений, которые 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

включить модуль запросов с помощью 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")