How do I catch a specific HTTP error in Python?
Python 3
from urllib.error import HTTPError
Python 2
from urllib2 import HTTPError
Just catch HTTPError
, handle it, and if it's not Error 404, simply use raise
to re-raise the exception.
See the Python tutorial.
e.g. complete example for Pyhton 2
import urllib2from urllib2 import HTTPErrortry: urllib2.urlopen("some url")except HTTPError as err: if err.code == 404: <whatever> else: raise
Tim's answer seems to me as misleading especially when urllib2
does not return the expected code. For example, this error will be fatal (believe or not - it is not uncommon one when downloading urls):
AttributeError: 'URLError' object has no attribute 'code'
Fast, but maybe not the best solution would be code using nested try/except block:
import urllib2try: urllib2.urlopen("some url")except urllib2.HTTPError as err: try: if err.code == 404: # Handle the error else: raise except: ...
More information to the topic of nested try/except blocks Are nested try/except blocks in python a good programming practice?