日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
干!一張圖整理了Python所有內(nèi)置異常

在編寫程序時(shí),可能會經(jīng)常報(bào)出一些異常,很大一方面原因是自己的疏忽大意導(dǎo)致程序給出錯(cuò)誤信息,另一方面是因?yàn)橛行┊惓J浅绦蜻\(yùn)行時(shí)不可避免的,比如在爬蟲時(shí)可能有幾個(gè)網(wǎng)頁的結(jié)構(gòu)不一致,這時(shí)兩種結(jié)構(gòu)的網(wǎng)頁用同一套代碼就會出錯(cuò),所以我們就需要捕獲出現(xiàn)的異常,以防止程序因?yàn)殄e(cuò)誤信息而終止運(yùn)行。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的陽朔網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

Python有很多的內(nèi)置異常,也就是說Python開發(fā)者提前考慮到了用戶編程過程中可能會出現(xiàn)這類錯(cuò)誤,所以制造了這些內(nèi)置異??梢钥焖贉?zhǔn)確向用戶反饋出錯(cuò)信息幫助找出代碼中的bug。

Python官方文檔中也給出了所有內(nèi)置異常及觸發(fā)條件,為了更好的閱讀體驗(yàn),我把所有異常及觸發(fā)條件整理成了一張思維導(dǎo)圖:

下面針對幾個(gè)常見的異常單獨(dú)介紹一下,通過舉例深入了解在什么條件下會觸發(fā)哪一種異常。

1. SyntaxError

SyntaxError主要是Python語法發(fā)生了錯(cuò)誤,比如少個(gè)冒號、多個(gè)引號之類的,編程時(shí)稍微疏忽大意一下就會出錯(cuò),應(yīng)該是最常見的一種異常錯(cuò)誤了。

 
 
 
 
  1. In [1]: While True print('1') 
  2.   File "", line 1 
  3.     While True print('1') 
  4.           ^ 
  5. SyntaxError: invalid syntax 

2. TypeError

TypeError是類型錯(cuò)誤,也就是說將某個(gè)操作或功能應(yīng)用于不合適類型的對象時(shí)引發(fā),比如整型與字符型進(jìn)行加減法、在兩個(gè)列表之間進(jìn)行相減操作等等。

 
 
 
 
  1. In [8]: a = [1,2];b = [2,3] 
  2. In [9]: a-b 
  3. --------------------------------------------------------------------------- 
  4. TypeError                                 Traceback (most recent call last) 
  5.  in  
  6. ----> 1 a-b 
  7.  
  8. TypeError: unsupported operand type(s) for -: 'list' and 'list' 

3. IndexError

IndexError是指索引出現(xiàn)了錯(cuò)誤,比如最常見下標(biāo)索引超出了序列邊界,比如當(dāng)某個(gè)序列m只有三個(gè)元素,卻試圖訪問m[4]。

 
 
 
 
  1. In [16]: m = [1,2,3] 
  2. In [17]: m[4] 
  3. --------------------------------------------------------------------------- 
  4. IndexError                                Traceback (most recent call last) 
  5.  in  
  6. ----> 1 m[4] 
  7.  
  8. IndexError: list index out of range 

4. KeyError

KeyError是關(guān)鍵字錯(cuò)誤,這個(gè)異常主要發(fā)生在字典中,比如當(dāng)用戶試圖訪問一個(gè)字典中不存在的鍵時(shí)會被引發(fā)。

 
 
 
 
  1. In [18]: dict_ = {'1':'yi','2':'er'} 
  2. In [19]: dict_['3'] 
  3. --------------------------------------------------------------------------- 
  4. KeyError                                  Traceback (most recent call last) 
  5.  in  
  6. ----> 1 dict_['3'] 
  7.  
  8. KeyError: '3' 

5. ValueError

ValueError為值錯(cuò)誤,當(dāng)用戶傳入一個(gè)調(diào)用者不期望的值時(shí)會引發(fā),即使這個(gè)值的類型是正確的,比如想獲取一個(gè)列表中某個(gè)不存在值的索引。

 
 
 
 
  1. In [22]: n = [1,2,3] 
  2. In [23]: n.index(4) 
  3. --------------------------------------------------------------------------- 
  4. ValueError                                Traceback (most recent call last) 
  5.  in  
  6. ----> 1 n.index(4) 
  7.  
  8. ValueError: 4 is not in list 

6. AttributeError

AttributeError是屬性錯(cuò)誤,當(dāng)用戶試圖訪問一個(gè)對象不存在的屬性時(shí)會引發(fā),比如列表有index方法,而字典卻沒有,所以對一個(gè)字典對象調(diào)用該方法就會引發(fā)該異常。

 
 
 
 
  1. In [25]: dict_ = {'1':'yi','2':'er'} 
  2. In [26]: dict_.index('1') 
  3. --------------------------------------------------------------------------- 
  4. AttributeError                            Traceback (most recent call last) 
  5.  in  
  6. ----> 1 dict_.index('1') 
  7.  
  8. AttributeError: 'dict' object has no attribute 'index' 

7. NameError

NameError是指變量名稱發(fā)生錯(cuò)誤,比如用戶試圖調(diào)用一個(gè)還未被賦值或初始化的變量時(shí)會被觸發(fā)。

 
 
 
 
  1. In [27]: print(list_) 
  2. --------------------------------------------------------------------------- 
  3. NameError                                 Traceback (most recent call last) 
  4.  in  
  5. ----> 1 print(list_) 
  6.  
  7. NameError: name 'list_' is not defined 

8. FileNotFoundError

FileNotFoundError為打開文件錯(cuò)誤,當(dāng)用戶試圖以讀取方式打開一個(gè)不存在的文件時(shí)引發(fā)。

 
 
 
 
  1. In [29]: fb = open('./list','r') 
  2. --------------------------------------------------------------------------- 
  3. FileNotFoundError                         Traceback (most recent call last) 
  4.  in  
  5. ----> 1 fb = open('./list','r') 
  6.  
  7. FileNotFoundError: [Errno 2] No such file or directory: './list' 

9. StopIteration

StopIteration為迭代器錯(cuò)誤,當(dāng)訪問至迭代器最后一個(gè)值時(shí)仍然繼續(xù)訪問,就會引發(fā)這種異常,提醒用戶迭代器中已經(jīng)沒有值可供訪問了。

 
 
 
 
  1. In [30]: list1 = [1,2] 
  2. In [31]: list2 = iter(list1) 
  3. In [33]: next(list2) 
  4. Out[33]: 1 
  5.  
  6. In [34]: next(list2) 
  7. Out[34]: 2 
  8.  
  9. In [35]: next(list2) 
  10. --------------------------------------------------------------------------- 
  11. StopIteration                             Traceback (most recent call last) 
  12.  in  
  13. ----> 1 next(list2) 

10. AssertionError

AssertionError為斷言錯(cuò)誤,當(dāng)用戶利用斷言語句檢測異常時(shí),如果斷言語句檢測的表達(dá)式為假,則會引發(fā)這種異常。

 
 
 
 
  1. In [45]: list3 = [1,2] 
  2.  
  3. In [46]: assert len(list3)>2 
  4. --------------------------------------------------------------------------- 
  5. AssertionError                            Traceback (most recent call last) 
  6.  in  
  7. ----> 1 assert len(list3)>2 
  8.  
  9. AssertionError: 

上面這些異常應(yīng)該是平時(shí)編程中遇見頻率比較高的一部分,完整的還是要看上文的思維導(dǎo)圖或者查閱官方文檔,當(dāng)然除此之外Python也支持用戶根據(jù)自己的需求自定義異常,這里就不再過多概述了。

對于異常的處理Python也有著比較強(qiáng)大的功能,比如可以捕獲異常,主動(dòng)拋出異常等等,主要有下面幾種方式:

  • try ... except 結(jié)構(gòu)語句捕獲
  • try ... except ... finally 結(jié)構(gòu)語句捕獲
  • try ... except ... else 結(jié)構(gòu)語句捕獲
  • raise關(guān)鍵字主動(dòng)拋出異常
  • try ... raise ... except 觸發(fā)異常
  • assert斷言語句
  • traceback模塊跟蹤查看異常

網(wǎng)站題目:干!一張圖整理了Python所有內(nèi)置異常
鏈接地址:http://m.5511xx.com/article/djghsis.html