urlopen()和read()[urllib2]

时间:2014-09-26 22:12:27

标签: python exception exception-handling urllib2 urllib

我正在测试一些异常处理,并想知道以下代码中可能发生的网络相关错误:

candidate =  urllib2.urlopen() #1
candidate.read() #2

我知道#1导致URLError。是否还有其他错误可以提出?特别是#2需要网络连接吗?

1 个答案:

答案 0 :(得分:3)

阅读要求套接字仍处于打开状态;虽然一些响应数据通常会被缓冲,但您可以通过读取来降低数据。 candidate.read()调用将一直阻塞,直到读完整个响应。

因此socket.errorIOError的子类)即使在candidate.read()调用期间也可以被提升。

除了urllib2.URLError异常(加上子类)之外,urllib2.urlopen()还可以引发httplib.HTTPException with various subclassessocket.error,或者在提供无效数据(非法网址字符串等)时,ValueError。获得响应对象后,response.read()也可以提升socket.errorhttplib.HTTPException

httplib.HTTPException是一个直的Exception子类。 socket.errorurllib2.URLErrorIOError个子类。