成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

盤點URLError和HTTPError異常處理方式

網絡 網絡管理
本文基于基礎,通過案例的分析,代碼的展示。解決在實際應用中,對于URLError空異常的處理方式。介紹了兩種主要的異常錯誤。以及提供了相應錯誤的解決方案處理方法。

[[390611]]

一、前言

本文主要說URLError 還有 HTTPError,以及一些處理方式。

二、URLError

1. 解釋下 URLError 可能產生的3個原因:

  1. # 1. 網絡無連接,即本機無法上網。 
  2.  
  3. # 2. 連接不到特定的服務器。 
  4.  
  5. # 3. 服務器不存在。 

2. 案例
例:

在代碼中,需要用 try-except 語句來包圍并捕獲相應的異常。

  1. # coding:UTF8 
  2.  
  3. import urllib.request 
  4.  
  5. request = urllib.request.urlopen("http://www.baidu.com"
  6.  
  7. try: 
  8.     urllib.request.urlopen(request) 
  9.     print("[Errno 11004] getaddrinfo failed"
  10. except urllib.URLError as e: 
  11.     print(e.reason) 

利用了 urlopen 方法訪問了一個不存在的網址。

運行結果:

注:

它說明了錯誤代號是11004,錯誤原因是 getaddrinfo failed。

三、HTTPError

HTTPError 是 URLError 的子類,在利用 urlopen 方法發出一個請求時,服務器上都會對應一個應答對象 response,其中它包含一個數字”狀態碼”。

例:

捕獲的異常是 HTTPError,它會帶有一個 code 屬性,就是錯誤代號,另外又打印了 reason 屬性,這是它的父類 URLError 的屬性。

  1. import urllib2 
  2. req = urllib2.Request('http://blog.csdn.net/cqcre'
  3. try: 
  4.     urllib2.urlopen(req) 
  5. except urllib2.HTTPError, e: 
  6.     print e.code 
  7.     print e.reason 

運行結果:

1. 代碼解析

錯誤代號是 403,錯誤原因是 Forbidden,說明服務器禁止訪問。

知道,HTTPError 的父類是 URLError,根據編程經驗,父類的異常應當寫到子類異常的后面,如果子類捕獲不到,那么可以捕獲父類的異常,

2. 優化代碼

  1. import urllib2 
  2. req = urllib2.Request('http://blog.csdn.net/cqcre'
  3. try: 
  4.     urllib2.urlopen(req) 
  5. except urllib2.HTTPError, e: 
  6.     print e.code 
  7. except urllib2.URLError, e: 
  8.     print e.reason 
  9. else
  10.     print "OK"   

如果捕獲到了 HTTPError,則輸出 code,不會再處理 URLError 異常。如果發生的不是HTTPError,則會去捕獲 URLError 異常,輸出錯誤原因。

另外還可以加入 hasattr 屬性提前對屬性進行判斷,代碼改寫如下

  1. import urllib2 
  2. req = urllib2.Request('http://blog.csdn.net/cqcre'
  3. try: 
  4.     urllib2.urlopen(req) 
  5. except urllib2.URLError, e: 
  6.     if hasattr(e,"code"): 
  7.         print e.code 
  8.     if hasattr(e,"reason"): 
  9.         print e.reason 
  10. else
  11.     print "OK"   

3. 異常處理方法

首先對異常的屬性進行判斷,以免出現屬性輸出報錯的現象。

假如 response 是一個”重定向”,需定位到別的地址獲取文檔,urllib2 將對此進行處理。

注 :

HTTPError 實例產生后會有一個 code 屬性,這就是是服務器發送的相關錯誤號。

因為 urllib2 可以為處理重定向,也就是 3 開頭的代號可以被處理,并且 100-299 范圍的號碼指示成功,所以只能看到 400-599 的錯誤號碼。

四、總結

本文基于基礎,通過案例的分析,代碼的展示。解決在實際應用中,對于URLError空異常的處理方式。介紹了兩種主要的異常錯誤。以及提供了相應錯誤的解決方案處理方法。

歡迎大家積極嘗試,有時候看到別人實現起來很簡單,但是到自己動手實現的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。

使用語言,能夠讓讀者更清晰,更直觀的理解文章內容。代碼很簡單,希望對學習有幫助。

 

責任編輯:姜華 來源: Go語言進階學習
相關推薦

2023-07-10 08:00:13

架構Rest返回值

2017-04-17 10:05:51

Hadoop錯誤方式

2018-08-14 13:26:07

異常設計斷網

2023-08-25 08:35:58

Rest方法字符串

2025-01-26 00:00:25

限流組件HTTP

2009-12-31 14:25:19

Silverlight

2010-01-18 16:58:29

VB.NET Over

2009-07-21 15:47:35

JDBC批處理

2023-10-08 20:31:18

React

2022-03-07 14:39:01

前端框架批處理

2024-04-07 08:50:00

GenAIAI人工智能

2010-01-13 17:23:36

VB.NET動態事件

2010-01-07 17:57:22

VB.NET構造函數

2024-11-20 13:20:32

2025-01-27 12:19:51

2010-10-15 12:17:28

Wi-Fi無線連接不上

2023-12-11 14:19:00

Java程序異常

2009-06-12 08:57:56

Unix字符串處理

2009-08-19 17:30:38

C#轉義字符

2010-01-22 18:32:23

VB.NET數據并發性
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产美女一区二区 | 亚洲美女一区 | 精品不卡| 欧美精品久久久久久 | 亚洲午夜精品视频 | 天天视频成人 | 久久草在线视频 | 久久亚洲国产 | 91 中文字幕 | 成年人在线观看视频 | 日本三级黄视频 | 国产成人在线视频 | 日韩和的一区二区 | 国产亚洲精品久久久久久豆腐 | 欧美一区在线视频 | 麻豆精品一区二区三区在线观看 | 亚洲欧美日韩高清 | 三级黄色片在线观看 | 91福利在线观看视频 | 东京久久 | 大香网伊人| 波多野结衣中文字幕一区二区三区 | 国产高潮好爽受不了了夜夜做 | 第一区在线观看免费国语入口 | 丁香五月缴情综合网 | 国内自拍视频在线观看 | 日本 欧美 国产 | 成人免费xxxxx在线视频 | 奇米视频777 | 国产精品久久久久9999鸭 | 欧美精品久久久久久久久老牛影院 | 亚洲第一网站 | 欧美精品日韩 | 成人亚洲一区 | 成人免费一区二区三区视频网站 | 久久这里只有精品首页 | 天天插天天操 | 久久精品99 | 日本免费黄色 | 国产精品观看 | 一级欧美日韩 |