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
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
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:
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
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")