如何在 Python 中處理異常(Try-Except-Finally)
了解如何在 Python 中使用 try、 except、 else 和 finally 區塊處理異常。編寫無錯誤且抗崩潰的 Python 程式碼。
概述
強大的軟體必須準備好處理意外情況,例如檔案遺失、使用者輸入無效、資料庫故障或網路中斷。當 Python 中發生錯誤時,它會引發異常。如果不處理,異常會立即停止您的程式並列印回溯堆疊。
Python 管理執行時期錯誤的主要工具是「try- except」區塊。您可以將可能引發錯誤的程式碼放置在「try」區塊內,並在一個或多個「 except」區塊內定義錯誤處理程式碼。強烈建議指定確切的異常類別(如“ValueError”或“ZeroDivisionError”),因為捕獲所有通用異常(“ except:”)可以掩蓋錯誤。
為了讓異常流更具表現力,Python 提供了兩個附加區塊:「else」和「finally」。只有當「try」區塊中沒有引發異常時,「else」區塊才會執行,這對於只應在成功時運行的程式碼很有用。無論是否發生異常,「finally」區塊*總是*執行,這使其成為關閉檔案或資料庫連線等清理的完美場所。
程式碼和執行輸出
這個腳本使用 try、 except、 else 和 finally 演示了 Python 中強大的錯誤處理。
handle_errors.py
在編輯器中嘗試def divide_numbers(a, b):
try:
# Code that might raise an exception
result = a / b
except ZeroDivisionError:
# Handling a specific exception
print("Error: Cannot divide by zero!")
except TypeError:
# Handling another exception type
print("Error: Inputs must be numbers!")
else:
# Run only if try block succeeded
print(f"Success! Result of {a}/{b} is {result}")
finally:
# Runs no matter what
print("Division attempt completed.")
divide_numbers(10, 2)
print("---")
divide_numbers(10, 0)端子輸出
Success! Result of 10/2 is 5.0
Division attempt completed.
---
Error: Cannot divide by zero!
Division attempt completed.逐步實施
- 將可能失敗的程式碼放在 try 區塊中。
- 使用 except ExceptionType: 區塊捕獲特定錯誤類型以優雅地處理故障。
- 對於必須僅在成功的 try 區塊上執行的程式碼,請使用 else。
- 利用finally 保證清理作業無論出現錯誤都會運作。
常見問題解答
我可以在單一 except 區塊中捕獲多個異常嗎?
是的,您可以將它們作為元組傳遞: except (ValueError, TypeError) as e:。
我該如何提出自己的例外狀況?
使用 raise 關鍵字,後面接著異常實例:raise ValueError("無效的配置值")。
相關主題
推薦的 Python 資源
透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。