Python异常处理全解析:从防御性编程到优雅恢复
一、异常处理的核心价值
想象你在开发一个文件处理程序:当尝试打开不存在的文件时,程序突然崩溃;当网络请求超时时,用户看到满屏红色错误信息。异常处理正是构建健壮应用的基石,它能:
- 预防程序崩溃:从错误中恢复而非终止
- 增强用户体验:提供友好的错误提示
- 提升调试效率:精确捕捉问题上下文
- 实现优雅降级:关键失败时启动备用方案
二、异常处理基础语法
try:
# 可能引发异常的代码
with open("data.txt") as f:
content = f.read()
except FileNotFoundError as e:
# 处理特定异常
print(f"文件丢失: {
e}")
create_new_file()
except (ValueError, TypeError):
# 多异常捕获
print("数据格式异常")
except Exception as e:
# 兜底处理
logging.error(f"未知错误: {
traceback.format_exc()}")
else:
# 无异常时执行
process_content(content)
finally:
# 始终执行(清理资源)
release_resources()
三、Python常见异常类型速查
异常类型 | 触发场景 | 解决方案 |
---|---|---|
FileNotFoundError |
文件不存在 | 检查路径/创建文件 |
KeyError |
字典键不存在 | 使用get()方法或键检查 |
IndexError |
列表索引越界 | 验证索引范围 |
ValueError |
类型正确但值不合法 | 数据校验/类型转换 |
TypeError |
操作应用于不适当类型 | 检查变量类型 |
ZeroDivisionError |
除数为零 | 添加分母非零判断 |
AttributeError |
对象属性不存在 | 检查属性是否存在 |