幫助這裏是我目前正在使用的代碼:學習Python異常處理
url = locations[state]['url']
headers = {'User-Agent':'Firefox/3.6.13'}
req = urllib.request.Request(url, headers=headers)
try:
resp = urllib.request.urlopen(req)
except:
print('Caught error, trying again...')
print('This should be handled better, I\'m sorry')
time.sleep(2)
resp = urllib.request.urlopen(req)
我得到的問題,因而我真正關心的例外是,這將偶有發生時提出請求:
URLError: <urlopen error [Errno 104] Connection reset by peer>
這並不是確切的錯誤,我想這可能是爲Python 2.x中的urllib的/ urllib2的和我在python3,我認爲這是urllib.error.URLError IIRC。無論如何,我知道我可以做的除了URLError,它應該工作(雖然我想知道是否需要做urllib.error.URLError,因爲這是它的報告),但我該如何測試,以確保它是因爲104.我希望它不斷重試,直到它獲得它,或者至少嘗試指定次數,我將如何最優雅地做到這一點?
從我能找到的錯誤104是因爲我的本地路由器無法處理請求,並且嚇壞了,我猜測是因爲它無法如此迅速地處理請求?如果任何人有什麼進一步的洞察力,那會是有益的,但我並不太在意。
注意`code`屬性只存在於`HTTPError`實例幷包含一個HTTP狀態碼,而不是一個errno值。 – ncoghlan 2011-02-15 07:17:42