Python3.X中的異常處理

要想處理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")

#它會把兩個都打印出來

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章