Sun, 17 May 2009 11:53:00 in Tech stuff | permalink
Yesterday I made a working prototype of my Last.fm stream ripper written in
Python. This is my second project that relatively intensively uses
urllib2 from Python standard library.
One of important things that I've learned about
urllib2.urlopen() from my previous project is that it does raise
some other exceptions besides urllib2.URLError (e.g.
http.HTTPException and socket.error) which is the only one mentioned
in the documentation.
Today I also found out that I'm not alone. Here's a discussion of this issue.
The summary of this discussion is that you need to handle (IOError,
socket.error, httplib.HTTPException, ValueError) (in Python 2.6
socket.error is not needed, as it inherits from
IOError). Also, ValueError should be handled in
separate except statement, because it can be fixed and/or indicates
a probable urrlib2 bug.