天天看點

Python3.X中的異常處理1.常見錯誤和異常2.try …except3.try …except …else4.raise5.try …finally

要想處理Python中遇到的異常和錯誤,首先要認識到Python中一般有哪些異常和錯誤。

1.常見錯誤和異常

常見異常 描述
NameError 嘗試通路一個沒有申明的變量
ZeroDivisionError 除數為0
SyntaxError 文法錯誤
indexError 索引超出序列範圍
KeyError 請求一個不存在的字典關鍵字
IOError 輸入輸出錯誤(比如你要讀的檔案不存在)
AttributeError 嘗試通路未知的對象屬性

以上為python中常見的錯誤異常,遇到這些錯誤時,不要慌,你要知道漲知識的時候到了。下面開始介紹幾個處理異常的方法。

2.try …except

try:
    語句
    語句
    .
    .
    .
    語句N
except 錯誤或異常名稱:
    do something...
           
#try/except語句用來檢測try語句塊中的錯誤,進而讓except語句捕獲異常資訊并處理。具體實作機制為:
           

1.執行try後面的語句(在關鍵字try和關鍵字except之間的語句)

2.如果沒有異常發生,忽略except子句,try子句執行後結束。

3.如果在執行try子句的過程中發生了異常,那麼try子句餘下的部分将被忽略。如果異常的類型和 except 之後的名稱相符,那麼對應的except子句将被執行。最後執行 try 語句之後的代碼。

4.如果一個異常沒有與任何的except比對,那麼在程式運作時,就會傳回到上層的try中,并顯示你的錯誤類型。

注意(敲黑闆)!!!

1.一個 try 語句可能包含多個except子句,分别來處理不同的特定的異常。最多隻有一個分支會被執行。

2.一個except子句可以同時處理多個異常,這些異常将被放在一個括号裡成為一個元組。

3.try …except …else

try:
    語句
    語句
    語句
    .
    .
    .
    語句N
except 錯誤或異常名稱:
    do something
else:
    do other things
           
#在try子句沒有發生任何異常的時候執行else後面的語句。
           

4.raise

#允許強行産生指定的異常,即産生的錯誤名稱由你自己命名
           
Q = input("請輸入一個整數:")
if type(Q) != type():
    raise ValueError
else:
    print(Q)
           
當你輸入的不是整數,它會報錯(ValueError),但你輸入的是一個整數後,它會輸出你輸入的整數。
           

5.try …finally

#無論異常是否發生,在程式結束前,finally中的語句都會被執行。
           
a=
b=
try:
    print(a/b)
finally:
    print("always excute")
           

它會報錯,但還是會列印‘always excute’

try…except…finally的使用

a=
b=
try:
    print(a/b)
except:
    print("error")
finally:
    print("always excute")
           

#它會把兩個都列印出來