以下都是自己的一些學習筆記,可能有寫的不對的地方,還望各位大佬體諒和加以指正。
try
塊允許我們測試代碼塊以查找錯誤。except
塊允許我們處理錯誤。finally
塊允許我們執行代碼,無論 try 和 except 塊的結果如何。當我們調用 Python 並發生錯誤或異常時,通常會停止並生成錯誤消息。
可以使用 try
語句處理這些異常:
try 塊將生成異常,因為 x 未定義:
try:
print(x)
except:
print("An exception occurred") # An exception occurred
由於 try
塊引發錯誤,因此會執行 except
塊。
如果沒有 try
塊,程序將崩潰並引發錯誤:
該語句將引發錯誤,因為未定義 x:
print(x)
我們可以根據需要定義任意數量的 exception
塊,例如,假如我們要為特殊類型的錯誤執行特殊代碼塊:
如果 try
塊引發 NameError
,則打印一條消息,如果是其他錯誤則打印另一條消息:
try:
print(x)
except NameError:
print("Variable x is not defined")
except:
print("Something else went wrong")
如果沒有引發錯誤,那麼我們可以使用 else
關鍵字來定義要執行的代碼塊:
在本例中,try
塊不會生成任何錯誤:
try:
print("Hello")
except:
print("Something went wrong")
else:
print("Nothing went wrong")
如果指定了 finally
塊,則無論 try
塊是否引發錯誤,都會執行 finally
塊。
try:
print(x)
except:
print("Something went wrong")
finally:
print("The 'try except' is finished")
這對於關閉對象並清理資源非常有用:
試圖打開並寫入不可寫的文件:
try:
f = open("demofile.txt")
f.write("Lorum Ipsum")
except:
print("Something went wrong when writing to the file")
finally:
f.close()
程序可以繼續,而且不會打開文件對象。
作為 Python 開發者,我們可以選擇在條件發生時拋出異常。
如需拋出(引發)異常,請使用 raise
關鍵詞。
假如 x 小於 0,則引發異常並終止程序:
x = -1
if x < 0:
raise Exception("Sorry, no numbers below zero")
raise
關鍵字用於引發異常。
我們能夠定義所引發異常的類型、以及打印給用戶的文本。
如果 x 不是整數,則引發 TypeError:
x = "hello"
if not type(x) is int:
raise TypeError("Only integers are allowed")
異常處理可以解決程序報錯或因為異常而停止的問題
語法為:
try:
<容易出錯的函數體>
except Exception as f: # Exxeption 為python中所有錯誤的父類
pass
# 意思是只有報錯就跳過