2012-01-29 20 views
26

Jak obsługiwać wyjątki za pomocą żądań biblioteki Pythona? Na przykład, jak sprawdzić, czy komputer jest podłączony do Internetu?Python żąda obsługi wyjątków

Kiedy próbuję

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

daje mi nazwa błędu ConnectionError nie jest zdefiniowana

+0

Proszę obejmują traceback wyjątku starasz się obsłużyć. – AdamKG

Odpowiedz

58

Zakładając zrobiłeś import requests, chcesz requests.ConnectionError. ConnectionError jest wyjątkiem zdefiniowanym przez requests. Zobacz tutaj: API documentation.

+2

dla przejrzystości, to znaczy: 'z wyjątkiem request.ConnectionError:', NOT 'import requests.ConnectionError' – StackG

+0

@StackG Dzięki dla dodatkowej przejrzystości, próbowałem zaimportować klasę bezpośrednio. – Jazzepi

5

dla jasności, że jest

except requests.ConnectionError: 
NIE

import requests.ConnectionError 

 

Można też złapać ogólny wyjątek (choć nie jest to zalecane) z

except Exception: 
1

W rzeczywistości istnieje wiele innych wyjątków, które mogą generować requests.get() niż tylko ConnectionError. Oto niektóre widziałem w produkcji:

from requests import ReadTimeout, ConnectTimeout, HTTPError, Timeout, ConnectionError try: r = requests.get(url, timeout=6.0) except (ConnectTimeout, HTTPError, ReadTimeout, Timeout, ConnectionError): continue

Powiązane problemy