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

干!一張圖整理了 Python 所有內置異常

開發 后端
Python有很多的內置異常,也就是說Python開發者提前考慮到了用戶編程過程中可能會出現這類錯誤,下面針對幾個常見的異常單獨介紹一下,通過舉例深入了解在什么條件下會觸發哪一種異常。

在編寫程序時,可能會經常報出一些異常,很大一方面原因是自己的疏忽大意導致程序給出錯誤信息,另一方面是因為有些異常是程序運行時不可避免的,比如在爬蟲時可能有幾個網頁的結構不一致,這時兩種結構的網頁用同一套代碼就會出錯,所以我們就需要捕獲出現的異常,以防止程序因為錯誤信息而終止運行。

Python有很多的內置異常,也就是說Python開發者提前考慮到了用戶編程過程中可能會出現這類錯誤,所以制造了這些內置異常可以快速準確向用戶反饋出錯信息幫助找出代碼中的bug。

Python官方文檔中也給出了所有內置異常及觸發條件,為了更好的閱讀體驗,我把所有異常及觸發條件整理成了一張思維導圖:

 

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

1. SyntaxError

SyntaxError主要是Python語法發生了錯誤,比如少個冒號、多個引號之類的,編程時稍微疏忽大意一下就會出錯,應該是最常見的一種異常錯誤了。

  1. In [1]: While True print('1') 
  2.   File "<ipython-input-1-8ebf67bb4c2b>", line 1 
  3.     While True print('1') 
  4.           ^ 
  5. SyntaxError: invalid syntax 

2. TypeError

TypeError是類型錯誤,也就是說將某個操作或功能應用于不合適類型的對象時引發,比如整型與字符型進行加減法、在兩個列表之間進行相減操作等等。

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

3. IndexError

IndexError是指索引出現了錯誤,比如最常見下標索引超出了序列邊界,比如當某個序列m只有三個元素,卻試圖訪問m[4]。

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

4. KeyError

KeyError是關鍵字錯誤,這個異常主要發生在字典中,比如當用戶試圖訪問一個字典中不存在的鍵時會被引發。

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

5. ValueError

ValueError為值錯誤,當用戶傳入一個調用者不期望的值時會引發,即使這個值的類型是正確的,比如想獲取一個列表中某個不存在值的索引。

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

6. AttributeError

AttributeError是屬性錯誤,當用戶試圖訪問一個對象不存在的屬性時會引發,比如列表有index方法,而字典卻沒有,所以對一個字典對象調用該方法就會引發該異常。

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

7. NameError

NameError是指變量名稱發生錯誤,比如用戶試圖調用一個還未被賦值或初始化的變量時會被觸發。

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

8. FileNotFoundError

FileNotFoundError為打開文件錯誤,當用戶試圖以讀取方式打開一個不存在的文件時引發。

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

9. StopIteration

StopIteration為迭代器錯誤,當訪問至迭代器最后一個值時仍然繼續訪問,就會引發這種異常,提醒用戶迭代器中已經沒有值可供訪問了。

  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. <ipython-input-35-5a5a8526e73b> in <module> 
  13. ----> 1 next(list2) 

10. AssertionError

AssertionError為斷言錯誤,當用戶利用斷言語句檢測異常時,如果斷言語句檢測的表達式為假,則會引發這種異常。

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

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

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

  • try ... except 結構語句捕獲
  • try ... except ... finally 結構語句捕獲
  • try ... except ... else 結構語句捕獲
  • raise關鍵字主動拋出異常
  • try ... raise ... except 觸發異常
  • assert斷言語句
  • traceback模塊跟蹤查看異常

 

責任編輯:趙寧寧 來源: 奶糖貓
相關推薦

2021-02-07 09:01:10

Java并發編程

2019-09-11 10:12:12

華為

2015-03-10 10:15:27

AppleWatch開發Swift

2015-09-14 09:07:15

Java多線程

2015-09-23 10:04:03

開放數據

2015-10-29 15:09:32

信息圖數據

2023-09-05 08:53:51

2018-05-18 18:09:44

人工智能

2013-12-16 10:59:52

WiFi上鎖WiFi被盜

2024-05-07 08:49:45

微服務架構模式

2018-02-13 14:56:24

戴爾

2020-09-12 16:45:49

Git

2025-03-11 10:58:00

2022-08-19 14:46:16

視覺框架

2015-06-24 10:51:10

iOS學習流程

2021-09-29 11:30:01

大數據技術架構

2016-11-10 10:03:02

微軟Power BI組件

2024-09-26 08:53:43

2022-03-31 11:41:02

DDoS網絡安全關鍵信息基礎設施
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色高清视频 | 中文字幕精品一区二区三区精品 | 成人精品影院 | 精品欧美一区二区三区 | 中文字幕免费在线 | 国产精品美女久久久 | 谁有毛片| 日本午夜免费福利视频 | 国产精品国产a | 欧美激情亚洲 | h视频在线免费看 | 在线免费观看日本视频 | 国产一级在线 | www国产成人免费观看视频,深夜成人网 | 国产激情一区二区三区 | 国产精品高清在线 | 久久尤物免费一区二区三区 | 亚洲五码在线 | 国产精品视频免费观看 | 中文字幕一区二区三区精彩视频 | 人人99 | 天天玩夜夜操 | 中文字幕精品一区 | 91成人精品 | 亚洲二区视频 | 日韩精品免费一区二区在线观看 | 色在线看 | 国产精品中文字幕在线播放 | 精品96久久久久久中文字幕无 | 国产欧美性成人精品午夜 | 91传媒在线观看 | 偷拍亚洲色图 | 中国一级大毛片 | 精品在线一区二区 | 国产成人精品综合 | 久久久噜噜噜www成人网 | 久久99视频这里只有精品 | 黄色av网站在线观看 | 免费观看的黄色网址 | 巨大荫蒂视频欧美另类大 | 国产精品久久久久永久免费观看 |