Gestion des exceptions de requêtes Python

Comment gérer les exceptions avec les requêtes de bibliothèque python? Par exemple, comment vérifier que le PC est connecté à internet?

Quand j'essaie

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

Il me donne le nom d'erreur ConnectionError n'est pas défini

29
demandé sur Kevin Burke 2012-01-29 20:46:54

4 réponses

En supposant que vous avez fait import requests, vous voulez requests.ConnectionError. ConnectionError est une exception définie par requests. Voir la documentation de l'API ici.

Ainsi, le code devrait être :

try:
   requests.get('http://www.google.com')
except requests.ConnectionError:
   # handle the exception
62
répondu kindall 2018-06-12 09:58:55

Pour plus de clarté, c'est -

except requests.ConnectionError:

Pas

import requests.ConnectionError

 

Vous pouvez également attraper une exception générale (bien que ce ne soit pas recommandé) avec

except Exception:
5
répondu StackG 2015-05-07 08:10:11

En fait, il y a beaucoup plus d'exceptions que requests.get() peut générer que ConnectionError. Voici quelques-uns que j'ai vu en production:

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

try:
    r = requests.get(url, timeout=6.0)
except (ConnectTimeout, HTTPError, ReadTimeout, Timeout, ConnectionError):
    continue
3
répondu kravietz 2018-03-28 13:19:27

Incluez le module requests en utilisant import requests .

Il est toujours bon d'implémenter la gestion des exceptions. Il ne permet pas seulement d'éviter la sortie inattendue du script, mais peut également aider à enregistrer les erreurs et les informations de notification. Lorsque vous utilisez des requêtes Python, je préfère attraper des exceptions comme ceci:

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")
1
répondu Tanmoy Datta 2018-05-23 20:19:50