try…except…finally
這是 python 中最常用的異常處理結(jié)構(gòu),用于捕獲異常并執(zhí)行相應(yīng)的處理邏輯。try 塊包含要執(zhí)行的代碼,except 塊包含捕獲異常后的處理邏輯,finally 塊包含無論是否發(fā)生異常都會(huì)執(zhí)行的代碼。例如:
try: # 執(zhí)行代碼 except Exception as e: # 捕獲異常并處理 finally: # 無論是否發(fā)生異常都會(huì)執(zhí)行的代碼
登錄后復(fù)制
raise
raise 語句用于拋出異常,可以指定要拋出的異常類型和異常信息。例如:
raise ValueError("無效的參數(shù)值")
登錄后復(fù)制
assert
assert 語句用于檢查某個(gè)條件是否成立,如果不成立則拋出 AssertionError 異常。例如:
assert x > 0, "x must be greater than 0"
登錄后復(fù)制
自定義異常
你可以創(chuàng)建自己的異常類,繼承自 Exception 類。例如:
class MyError(Exception): pass raise MyError("我的錯(cuò)誤")
登錄后復(fù)制
使用 logging 模塊記錄異常
logging 模塊可以用來記錄異常信息。例如:
import logging try: # 執(zhí)行代碼 except Exception as e: logging.error("發(fā)生異常", exc_info=True)
登錄后復(fù)制
使用上下文管理器處理異常
上下文管理器是一種用來簡(jiǎn)化異常處理的機(jī)制。例如:
with open("file.txt", "r") as f: # 執(zhí)行代碼
登錄后復(fù)制
如果在 with 塊中發(fā)生異常,則會(huì)自動(dòng)關(guān)閉文件 f。
使用異常來控制程序流程
異常也可以用來控制程序流程。例如,你可以使用異常來實(shí)現(xiàn)循環(huán)或分支。例如:
while True: try: # 執(zhí)行代碼 except KeyboardInterrupt: break
登錄后復(fù)制
使用異常來進(jìn)行單元測(cè)試
異常也可以用來進(jìn)行單元測(cè)試。例如,你可以使用異常來檢查函數(shù)是否拋出了正確的異常。例如:
import unittest class MyTestCase(unittest.TestCase): def test_my_function(self): with self.assertRaises(ValueError): my_function(-1)
登錄后復(fù)制
上述技巧可以幫助你更好地處理異常,提高代碼的健壯性。