Search code examples
pythonhttpurllib2urllib

How do I catch a specific HTTP error in Python?


I have

import urllib2
try:
   urllib2.urlopen("some url")
except urllib2.HTTPError:
   <whatever>

but what I end up is catching any kind of HTTP error. I want to catch only if the specified webpage doesn't exist (404?).


Solution

  • 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.

    Here is a complete example for Python 2:

    import urllib2
    from urllib2 import HTTPError
    try:
       urllib2.urlopen("some url")
    except HTTPError as err:
       if err.code == 404:
           <whatever>
       else:
           raise