2016-12-08 26 views
0

問題的標題可能有點混淆,但我真的不知道如何最好地將它寫出來...... 我發現下面的代碼塊下載通過使用urllib2庫,從網頁中獲取網頁。urlib2.URLError及其在python中的原因

import urllib2 

def download(url): 
    try: 
     html = urllib2.urlopen(url).read() 
    except urllib2.URLError as e: 
     print 'Download error:', e.reason 
     html = None 
    return html 

現在,如果它發生e.code是404隨後將e.reason僅僅是一個空字符串,這意味着它承擔什麼觸發錯誤絕對沒有任何信息,所以我真的不明白這裏使用e.reason點。 現在看來似乎會更合理打印e代替,但即使我改變它簡單地print e它仍然會產生一些尷尬:HTTP Error 404:和結腸apparenty後跟一個空字符串... 所以,在我看來,上述代碼在異常處理方面有點笨拙。是這樣嗎?

+0

是的,只要'print e'會更好。更常見的是根本不捕獲異常,因爲它似乎沒有被處理。這個問題到底是什麼? – wim

+0

404意味着未找到請求的資源。更好地「打印e」以獲得更多細節。 – ichbinblau

+0

@wim我從一本書中拿出了這段代碼,對於那裏處理異常的方式感到有點困惑,所以我想也許我錯過了一些東西...... – weeCoder

回答

0

如果您想查看404代碼,您似乎可以使用錯誤本身(打印e)或代碼和原因(打印「下載錯誤:」,e.code,e.reason)。

+0

似乎是這樣,我認爲該消息(如果它在那裏)必須提供信息,這意味着不應該允許空字符串。我認爲這只是常識。 – weeCoder