要想處理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")
#它會把兩個都列印出來