在物件導向程式語言(OOP)中,例外處理(Exception Handling)是一種處理運行時錯誤的方法,允許程式在遇到錯誤時不會立即崩潰,而是通過捕獲和處理例外來優雅地應對錯誤情況。大多數 OOP 語言都有內建的例外處理機制,並允許開發者自定義例外類別來處理特定的錯誤情況。
以下是對內建及自定例外處理方式的簡單說明和使用範例:
內建例外處理
內建例外是語言本身提供的例外類別,用於處理常見的錯誤情況,如零除錯誤、索引超出範圍、檔案未找到等。以 Python 為例,內建例外處理使用 try、except、else 和 finally 關鍵字。
範例(Python):
python
複製程式碼
try:
# 嘗試執行這段代碼
result = 10 / 0
except ZeroDivisionError as e:
# 捕獲並處理零除錯誤
print(f"Error occurred: {e}")
else:
# 如果沒有發生錯誤則執行這段代碼
print(f"The result is {result}")
finally:
# 無論是否發生錯誤都會執行這段代碼
print("Execution completed")
輸出:
vbnet
複製程式碼
Error occurred: division by zero
Execution completed
自定例外處理
自定例外允許開發者根據具體需求定義新的例外類別,用於處理特定的錯誤情況。這些類別通常繼承自內建的 Exception 類別或其子類別。
範例(Python):
python
複製程式碼
# 定義自定例外類別
class CustomError(Exception):
pass
def divide(a, b):
if b == 0:
# 拋出自定例外
raise CustomError("You cannot divide by zero!")
return a / b
try:
result = divide(10, 0)
except CustomError as e:
# 捕獲並處理自定例外
print(f"CustomError occurred: {e}")
else:
print(f"The result is {result}")
finally:
print("Execution completed")
輸出:
csharp
複製程式碼
CustomError occurred: You cannot divide by zero!
Execution completed
總結
內建例外處理:
使用 try、except、else 和 finally 關鍵字來捕獲和處理內建的例外。
常見內建例外類別包括 ZeroDivisionError、IndexError、FileNotFoundError 等。
自定例外處理:
通過繼承 Exception 類別定義新的例外類別。
使用 raise 關鍵字在需要的地方拋出自定例外,並在 except 區塊中捕獲和處理這些例外。
例外處理機制使程式能夠更靈活和健壯地應對各種錯誤情況,提供更好的錯誤管理和用戶體驗。