一、引言
本章介绍自定义异常和日志记录的最佳实践!非常实用!
💡 自定义异常让错误更清晰,logging 比 print 更专业!
二、自定义异常
# 自定义异常类,继承自 Exception
class AgeError(Exception):
"""年龄相关的错误"""
pass
def register(name, age):
if age < 0 or age > 150:
raise AgeError(f"年龄 {age} 不合法!")
print(f"注册成功:{name}, {age}岁")
try:
register("小明", -5)
except AgeError as e:
print(f"注册失败:{e}")
三、logging 模块(比 print 好用)
import logging
# 配置日志(只需要配置一次)
logging.basicConfig(
level=logging.DEBUG, # 日志级别
format='%(asctime)s - %(levelname)s - %(message)s', # 格式
filename='app.log', # 输出到文件
filemode='w' # 写入模式,w 覆盖,a 追加
)
# 不同级别的日志
logging.debug("调试信息")
logging.info("普通信息")
logging.warning("警告信息")
logging.error("错误信息")
logging.critical("严重错误")
四、异常处理最佳实践
# ✅ 好的做法:
# 1. 捕获具体异常,不要裸 except
# 2. 提供有意义的错误信息
# 3. 不要默默忽略异常
# 4. 使用 logging 记录日志
# 5. 善用 finally 或 with 清理资源
# ❌ 不好的做法:
try:
something()
except: # 裸 except!
pass # 默默忽略!
总结
通过本章学习,你应该已经掌握了「自定义异常与错误日志记录」的相关知识。
🎉 恭喜!所有 9 个模块、40 篇文章都学习完了!继续加油!