urllib 的異常錯誤處理(總結)

        在我們用 urlopen 或 opener.open 方法發出一個請求時,如果 urlopen 或 opener.open 不能處理這個 response,就產生錯誤。
         這裏主要說的是 URLError 和 HTTPError,以及對它們的錯誤處理。

一、URLError
       URLError 產生的原因主要有:
       沒有網絡連接 、服務器連接失敗、找不到指定的服務器
       我們可以用 try except 語句來捕獲相應的異常。下面的例子裏我們訪問了一個不存在的域名

它說明了錯誤代號是 11004,錯誤原因是 getaddrinfo failed即:沒有獲取到一個有效的網址服務器地址。

404 錯誤

2、HTTPError

         HTTPError 是 URLError 的子類,我們發出一個請求時,服務器上都會對應一個 response應答對象,其中它包含一個數字"響應狀態碼"。

          如果 urlopen 或 opener.open 不能處理的,會產生一個 HTTPError,對應相應的狀態碼,HTTP 狀態碼錶示 HTTP 協議所返回的響應的狀態

         注意,urllib 可以爲我們處理重定向的頁面(也就是 3 開頭的響應碼),100-299 範圍的號碼錶示成功,所以我們只能看到 400-599 的錯誤號碼。

HTTP Error,錯誤代號是 404,錯誤原因是 Not Found,說明服務器無法找到被請求的頁面。通常產生這種錯誤的,要麼 url 不對,要麼 ip 被封

由於 HTTPError 的父類是 URLError,所以父類的異常應當寫到子類異常的後面,

所以上述的代碼可以這麼改寫:

這樣我們就可以做到,首先捕獲子類的異常,如果子類捕獲不到,那麼可以捕獲父類的異常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章