1. 异常处理基石:try/except 结构
Python使用try块包裹可能出错的代码,except捕获特定异常:
try:
file = open("data.txt", "r")
content = file.read()
result = 100 / int(content)
except FileNotFoundError:
print("文件不存在!")
except (ValueError, ZeroDivisionError) as e: # 捕获多异常
print(f"数值错误: {e}")
else:
print("计算成功:", result) # 无异常时执行
finally:
file.close() if 'file' in locals() else None # 确保资源释放
2. 异常体系与自定义异常
Python内置丰富异常类(如IOError、IndexError)。通过继承Exception可创建领域特定异常:
class InvalidEmailError(Exception):
"""邮箱格式异常"""
def __init__(self, email):
self.email = email
super().__init__(f"无效邮箱: {email}")
def validate_email(email):
if "@" not in email:
raise InvalidEmailError(email)
try:
validate_email("user.example.com")
except InvalidEmailError as e:
print(e) # 输出:无效邮箱: user.example.com
3. 上下文管理器与 with 语句
with自动管理资源,避免忘记关闭文件或连接:
with open("data.txt", "r") as file: # 退出块自动调用file.close()
data = file.readlines()
# 即使发生异常,文件也会正确关闭
4. 异常处理 vs 错误码返回
|
方法 |
适用场景 |
优势 |
|
异常处理 |
可恢复错误、流程中断 |
分离正常/错误逻辑,代码清晰 |
|
错误码返回 |
预期内状态(如搜索无结果) |
避免异常开销,简单直接 |
5. 防御性编程实践
- 精准捕获:避免空泛的
except:,指定具体异常类型 - 异常日志:使用
logging记录异常详情而非仅打印 - 资源清理:
finally或上下文管理器确保释放资源 - 异常转换:底层异常捕获后抛出自定义高层异常
关键洞见:Python的异常处理不仅是语法工具,更是设计哲学。EAFP("Easier to Ask for Forgiveness than Permission")原则鼓励大胆尝试、优雅恢复,与LBYL("Look Before You Leap")形成鲜明对比,显著提升代码简洁性与执行效率。
掌握Python异常处理,如同为程序穿上隐形护甲——既能在错误风暴中稳健运行,又能保持代码的优雅与清晰。这是通向专业级开发的必经之路。
🚀 需要针对Web开发、数据处理等特定场景的异常处理技巧?欢迎提出进一步需求!

被折叠的 条评论
为什么被折叠?



