Python 中的多個異常
在程式設計中,發生的異常會干擾程式的正常流程。在 Python 中,它表示為錯誤。根據異常的原因,異常的型別可以不同,例如 IndexError,KeyError 等。
我們可以使用 try
和 except
塊來處理異常。try
塊包含一些可能引發異常的程式碼,如果引發異常,則可以在 except
塊中指定備用程式碼。
例如,
try:
print(5 / 0)
except:
print(5 / 1)
輸出:
5
5/0
引發異常,因此它將執行 except
塊中的程式碼。
請注意,也可以使用 raise
關鍵字手動引發異常。
我們還可以處理 Python 中的多個異常。我們知道 Python 中有不同型別的異常,因此對於不同的異常,我們可以有多個 except
語句。
例如,
try:
raise ValueError()
except ValueError:
print("Value Error")
except KeyError:
print("Key Error")
輸出:
Value Error
一個 except
語句也可以捕獲多個異常。這些方法將在下面討論。
使用逗號和括號來捕獲多個異常
實現此目的的第一種方法是用逗號分隔例外並將其放在括號中。以下程式碼顯示瞭如何。
try:
raise ValueError()
except (ValueError, KeyError):
print("Error")
輸出:
Error
如果遇到括號中提到的異常,則執行該塊中的程式碼。我們還可以為異常物件(也稱為錯誤物件)分配一些名稱。e
是錯誤物件的最常用名稱。例如,
try:
raise ValueError()
except (ValueError, KeyError) as e:
print("Error")
輸出:
Error
as
關鍵字為物件名稱建立別名。在 Python 2.5 以下,可以通過簡單地使用逗號分隔錯誤物件的名稱來消除 as
關鍵字的使用,如下所示。
try:
raise ValueError()
except (ValueError, KeyError), e:
print("Error")
輸出:
Error
使用 suppress()
函式捕獲多個異常
contextlib
庫提供了一個非常有用的名為 suppress()
的函式,該函式還可用於處理多個異常。
此函式將 try
、except
和 pass
語句組合到一行程式碼中。它與 with
語句一起使用,該語句也用於異常處理,並使程式碼更清晰易讀。
以下程式碼顯示瞭如何使用此函式。
from contextlib import suppress
with suppress(FileNotFoundError):
os.remove("somefile.tmp")
上面的程式碼與帶有 try
、except
和 pass
語句的以下程式等效。
try:
os.remove("somefile.tmp")
except FileNotFoundError:
pass
當我們不想執行任何操作但要避免空程式碼出現任何錯誤時,可以使用 pass
語句。
我們可以對多個異常使用 suppress
函式,如下所示。
from contextlib import suppress
with suppress(FileNotFoundError, KeyError):
os.remove("somefile.tmp")
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn