Python Try Except

try 塊允許您測試代碼塊以查找錯誤。

except 塊允許您處理錯誤。

finally 塊允許您執行代碼,無論 try 和 except 塊的結果如何。

異常處理

當我們調用 Python 并發生錯誤或異常時,通常會停止并生成錯誤消息。

可以使用 try 語句處理這些異常:

實例

try 塊將生成異常,因為 x 未定義:

try:
  print(x)
except:
  print("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

如果沒有引發錯誤,那么您可以使用 else 關鍵字來定義要執行的代碼塊:

實例

在本例中,try 塊不會生成任何錯誤:

try:
  print("Hello")
except:
  print("Something went wrong")
else:
  print("Nothing went wrong")

運行實例

Finally

如果指定了 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")

運行實例