Python常見異常類型處理

前言:

開發人員在編寫程序時,難免會遇到錯誤,有的是編寫人員疏忽造成的語法錯誤,有的是程序內部隱含邏輯問題造成的數據錯誤,還有的是程序運行時與系統的規則沖突造成的系統錯誤,等等。

總的來說,編寫程序時遇到的錯誤可大致分為 2 類,分別為語法錯誤和運行時錯誤。

1.Python語法錯誤

語法錯誤,也就是解析代碼時出現的錯誤。當代碼不符合 Python 語法規則時,Python解釋器在解析時就會報出 SyntaxError 語法錯誤,與此同時還會明確指出最早探測到錯誤的語句。

例如:

print "Hello,World!"

我們知道,Python 3 已不再支持上面這種寫法,所以在運行時,解釋器會報如下錯誤:

SyntaxError: Missing parentheses in call to 'print'

語法錯誤多是開發者疏忽導致的,屬於真正意義上的錯誤,是解釋器無法容忍的,因此,隻有將程序中的所有語法錯誤全部糾正,程序才能執行。

2.Python運行時錯誤

運行時錯誤,即程序在語法上都是正確的,但在運行時發生瞭錯誤。

例如:

a = 1/0

上面這句代碼的意思是“用 1 除以 0,並賦值給 a 。

因為 0 作除數是沒有意義的,所以運行後會產生如下錯誤:

>>> a = 1/0
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    a = 1/0
ZeroDivisionError: division by zero

以上運行輸出結果中,前兩段指明瞭錯誤的位置,最後一句表示出錯的類型。在 Python 中,把這種運行時產生錯誤的情況叫做異常(Exceptions)。這種異常情況還有很多,常見的幾種異常情況如表 1 所示

表 1 Python常見異常類型:

異常類型 含義 實例
AssertionError 當 assert 關鍵字後的條件為假時,程序運行會停止並拋出 AssertionError 異常 >>> demo_list = [‘C語言中文網’]
>>> assert len(demo_list) > 0
>>> demo_list.pop()
‘C語言中文網’
>>> assert len(demo_list) > 0
Traceback (most recent call last):
  File “<pyshell#6>”, line 1, in <module>
    assert len(demo_list) > 0
AssertionError
AttributeError 當試圖訪問的對象屬性不存在時拋出的異常 >>> demo_list = [‘C語言中文網’]
>>> demo_list.len
Traceback (most recent call last):
  File “<pyshell#10>”, line 1, in <module>
    demo_list.len
AttributeError: ‘list’ object has no attribute ‘len’
IndexError 索引超出序列范圍會引發此異常 >>> demo_list = [‘C語言中文網’]
>>> demo_list[3]
Traceback (most recent call last):
  File “<pyshell#8>”, line 1, in <module>
    demo_list[3]
IndexError: list index out of range
KeyError 字典中查找一個不存在的關鍵字時引發此異常 >>> demo_dict={‘C語言中文網’:”c.biancheng.net”}
>>> demo_dict[“C語言”]
Traceback (most recent call last):
  File “<pyshell#12>”, line 1, in <module>
    demo_dict[“C語言”]
KeyError: ‘C語言’
NameError 嘗試訪問一個未聲明的變量時,引發此異常 >>> C語言中文網
Traceback (most recent call last):
  File “<pyshell#15>”, line 1, in <module>
    C語言中文網
NameError: name ‘C語言中文網’ is not defined
TypeError 不同類型數據之間的無效操作 >>> 1+’C語言中文網’
Traceback (most recent call last):
  File “<pyshell#17>”, line 1, in <module>
    1+’C語言中文網’
TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’
ZeroDivisionError 除法運算中除數為 0 引發此異常 >>> a = 1/0
Traceback (most recent call last):
  File “<pyshell#2>”, line 1, in <module>
    a = 1/0
ZeroDivisionError: division by zero

提示:表中的異常類型不需要記住,隻需簡單瞭解即可。

當一個程序發生異常時,代表該程序在執行時出現瞭非正常的情況,無法再執行下去。默認情況下,程序是要終止的。如果要避免程序退出,可以使用捕獲異常的方式獲取這個異常的名稱,再通過其他的邏輯代碼讓程序繼續運行,這種根據異常做出的邏輯處理叫作異常處理。

開發者可以使用異常處理全面地控制自己的程序。異常處理不僅僅能夠管理正常的流程運行,還能夠在程序出錯時對程序進行必的處理。大大提高瞭程序的健壯性和人機交互的友好性。

到此這篇關於Python常見異常類型處理的文章就介紹到這瞭,更多相關Python異常處理內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: