要想處理Python中遇到的異常和錯誤,首先要認識到Python中一般有哪些異常和錯誤。
1.常見錯誤和異常
常見異常 | 描述 |
---|---|
NameError | 嘗試訪問一個沒有申明的變量 |
ZeroDivisionError | 除數爲0 |
SyntaxError | 語法錯誤 |
indexError | 索引超出序列範圍 |
KeyError | 請求一個不存在的字典關鍵字 |
IOError | 輸入輸出錯誤(比如你要讀的文件不存在) |
AttributeError | 嘗試訪問未知的對象屬性 |
以上爲python中常見的錯誤異常,遇到這些錯誤時,不要慌,你要知道漲知識的時候到了。下面開始介紹幾個處理異常的方法。
2.try …except
try:
語句1
語句2
.
.
.
語句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:
語句1
語句2
語句3
.
.
.
語句N
except 錯誤或異常名稱:
do something
else:
do other things
#在try子句沒有發生任何異常的時候執行else後面的語句。
4.raise
#允許強行產生指定的異常,即產生的錯誤名稱由你自己命名
Q = input("請輸入一個整數:")
if type(Q) != type(1):
raise ValueError
else:
print(Q)
當你輸入的不是整數,它會報錯(ValueError),但你輸入的是一個整數後,它會輸出你輸入的整數。
5.try …finally
#無論異常是否發生,在程序結束前,finally中的語句都會被執行。
a=10
b=0
try:
print(a/b)
finally:
print("always excute")
它會報錯,但還是會打印‘always excute’
try…except…finally的使用
a=10
b=0
try:
print(a/b)
except:
print("error")
finally:
print("always excute")
#它會把兩個都打印出來