2014-09-26 50 views
1

我想了解我是否可以在python中處理以下錯誤。Python中的URLError

所以我有一個程序,反覆調用下面一行:

candidate = urllib2.urlopen(absolute_path) 

運行我的程序幾秒鐘後,我關閉了我的wifi連接,並得到了以下錯誤:

File "crawler.py", line 28, in urlQuery 
    candidate = urllib2.urlopen(absolute_path) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen 
    return _opener.open(url, data, timeout) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 404, in open 
    response = self._open(req, data) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 422, in _open 
'_open', req) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain 
    result = func(*args) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1214, in http_open 
    return self.do_open(httplib.HTTPConnection, req) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1184, in do_open 
    raise URLError(err) 
urllib2.URLError: <urlopen error [Errno 65] No route to host> 

有什麼辦法可以處理這個錯誤?

回答

1

取決於你想要做什麼,當你得到這個例外。您可以使用標準Python的異常處理技術try-except

try: 
    candidate = urllib2.urlopen(absolute_path) 
#except Exception as e: # catches any exception 
except urllib2.URLError as e: # catches urllib2.URLError in e 
    print ('WiFi connection perhaps lost !! Trying one more time...') 
    try: 
     candidate = urllib2.urlopen(absolute_path) 
    except: 
     print ('WiFi connection really lost !! Bailing out..') 
     print (e) # print outs the exception message 
+0

@Andy - 只是爲了顯示捕捉任何異常的標準方法。順便說一句,我修改只捕捉'URLError' – sk11 2014-09-26 14:39:54

+0

因此,當我趕上例外,我想再次嘗試看看該網址是否打開,如果它打開,我想返回候選人。你能否修改你的答案來照顧這個? – KKa 2014-09-26 17:04:46

+0

在第一個除外使用'try-except'。修改我的答案 – sk11 2014-09-27 05:47:07

相關問題