首先解釋下URLError可能產生的緣由:html
在代碼中,咱們須要用try-except語句來包圍並捕獲相應的異常。編程
requset = urllib2.Request('http://www.xxxxx.com') try: urllib2.urlopen(request) except urllib2.URLError, e: print e.reason #輸出結果 1 [Errno 11004] getaddrinfo failed
下面咱們寫一個例子來感覺一下,捕獲的異常是HTTPError,它會帶有一個code屬性,就是錯誤代號,另外咱們又打印了reason屬性,這是它的父類URLError的屬性。服務器
咱們知道,HTTPError的父類是URLError,根據編程經驗,父類的異常應當寫到子類異常的後面,若是子類捕獲不到,那麼能夠捕獲父類的異常,因此上述的代碼能夠這麼改寫網絡
若是捕獲到了HTTPError,則輸出code,不會再處理URLError異常。若是發生的不是HTTPError,則會去捕獲URLError異常,輸出錯誤緣由。ui
另外還能夠加入 hasattr屬性提早對屬性進行判斷,代碼改寫以下url
import urllib2 req = urllib2.Request('http://blog.csdn.net/cqcre') try: urllib2.urlopen(req) except urllib2.URLError, e: if hasattr(e,"reason"): print e.reason else: print "OK"
轉自崔慶才博客https://cuiqingcai.com/961.htmlspa