Exception Handling Of Python Requests Module
1 min readMay 5, 2021
The aim of this playbook🏁 is to share a personal template for exception handling of the Python requests module.
First things first: what is not stressed enough is that if you want to raise an exception for 4xx/5xx HTTP status errors, you need the raise_for_status() method.
The HTTPError
alone does not catch 4xx/5xx (e.g. also authentication failures, server outages that return with 5xx, etc.)
Also, in code around me, I am regularly finding something like which is not enough
try:
response = requests.get(url, auth=token)
except:
print("ERROR: Failed to establish connection")
raise
- first, a personal real-life code I am using for the deletion of a document from Zendesk Guide (Knowledge base)
- the
HTTPError
is (also) raised byresponse.raise_for_status()
- if the HTTP Request returned an unsuccesful status code (4xx
/5xx
) - exceptions that Requests explicitly raises inherit from
requests.exceptions.RequestException
- The official Requests exception docs offer more fine tuned exception types
- in other words and if need be, create a dedicated exception block for each error type as the following example from SO