Arnab Sen Gupta Arnab Sen Gupta - 5 months ago 19
Python Question

catch specific HTTP error in python

I want to catch a specific http error and not any one of the entire family..
what I was trying to do is --

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


but what I end up is catching any kind of http error, but I want to catch only if the specified webpage doesn't exist!! probably that's HTTP error 404..but I don't know how to specify that catch only error 404 and let the system run the default handler for other events..ny suggestions??

Answer

Just catch urllib2.HTTPError, handle it, and if it's not Error 404, simply use raise to re-raise the exception.

See the Python tutorial.

So you could do:

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