Lihat dokumen Permintaan pengecualian . Pendeknya:
Jika terjadi masalah jaringan (mis. Kegagalan DNS, koneksi ditolak, dll), Permintaan akan menimbulkan ConnectionError
pengecualian.
Jika respons HTTP langka yang tidak valid, Permintaan akan memunculkan HTTPError
pengecualian.
Jika permintaan habis, Timeout
pengecualian akan muncul.
Jika permintaan melebihi jumlah redirection maksimum yang dikonfigurasi, TooManyRedirects
pengecualian dimunculkan.
Semua pengecualian yang secara eksplisit dimunculkan oleh Permintaan requests.exceptions.RequestException
.
Untuk menjawab pertanyaan Anda, apa yang Anda tampilkan tidak akan mencakup semua basis Anda. Anda hanya akan menangkap kesalahan terkait koneksi, bukan kesalahan waktu itu.
Apa yang harus dilakukan ketika Anda mengetahui pengecualian benar-benar sesuai dengan desain skrip / program Anda. Apakah bisa diterima untuk keluar? Bisakah Anda melanjutkan dan mencoba lagi? Jika kesalahan adalah bencana besar dan Anda tidak dapat melanjutkan, maka ya, Anda dapat membatalkan program Anda dengan menaikkan SystemExit (cara yang bagus untuk mencetak kesalahan dan panggilan sys.exit
).
Anda bisa menangkap pengecualian kelas dasar, yang akan menangani semua kasus:
try:
r = requests.get(url, params={'s': thing})
except requests.exceptions.RequestException as e: # This is the correct syntax
raise SystemExit(e)
Atau Anda dapat menangkapnya secara terpisah dan melakukan hal yang berbeda.
try:
r = requests.get(url, params={'s': thing})
except requests.exceptions.Timeout:
# Maybe set up for a retry, or continue in a retry loop
except requests.exceptions.TooManyRedirects:
# Tell the user their URL was bad and try a different one
except requests.exceptions.RequestException as e:
# catastrophic error. bail.
raise SystemExit(e)
Seperti yang ditunjukkan Christian :
Jika Anda ingin kesalahan http (mis. 401 Tidak Resmi) menimbulkan pengecualian, Anda dapat menelepon Response.raise_for_status
. Itu akan memunculkan HTTPError
, jika responsnya adalah kesalahan http.
Sebuah contoh:
try:
r = requests.get('http://www.google.com/nothere')
r.raise_for_status()
except requests.exceptions.HTTPError as err:
raise SystemExit(err)
Akan dicetak:
404 Client Error: Not Found for url: http://www.google.com/nothere