1. 异常处理基础与核心概念
异常处理是编程中管理错误和意外情况的核心机制。当程序执行过程中出现异常时,正常的控制流会被中断,转而执行异常处理逻辑。Python中的异常处理主要依赖try/except/finally语句块。
1.1 Python异常处理机制
Python的异常处理遵循以下基本结构:
python复制try:
# 可能引发异常的代码
risky_operation()
except ValueError as e:
# 处理特定类型的异常
print(f"Caught a value error: {e}")
except (TypeError, KeyError):
# 处理多种异常类型
print("Caught a type or key error")
except Exception:
# 捕获所有其他异常
print("Caught a generic exception")
else:
# 没有异常发生时执行
print("Operation succeeded")
finally:
# 无论是否发生异常都会执行
cleanup_resources()
这种结构提供了完整的异常处理流程控制,其中:
- try块包含可能抛出异常的代码
- except块处理特定类型的异常
- else块在没有异常时执行
- finally块确保资源清理总是执行
1.2 异常处理最佳实践
在实际开发中,异常处理应遵循以下原则:
- 具体异常优先:先捕获最具体的异常类型,最后处理通用异常
- 避免空except块:至少记录异常信息,不要静默吞掉异常
- 保持try块精简:只包含可能抛出异常的代码
- 合理使用finally:确保资源释放和清理操作
- 异常链保留:使用
raise from保留原始异常上下文
python复制def process_file(filename):
try:
with open(filename) as f:
data = f.read()
except FileNotFoundError as e:
raise RuntimeError(f"Failed to process {filename}") from e
except PermissionError:
logging.error("Insufficient permissions")
raise
else:
return parse_data(data)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 上下文管理器深入解析
上下文管理器是Python中管理资源的优雅方式,通过__enter__和__exit__方法实现资源获取和释放的自动化。
2.1 上下文管理器协议
一个完整的上下文管理器类需要实现以下两个方法:
python复制class DatabaseConnection:
def __init__(self, db_name):
self.db_name = db_name
self.connection = None
def _
