3. 异常处理
3.1 基础语法
try:
# 可能出错的代码
except ValueError as e:
print("值错误:", e)
except Exception as e:
print("未知错误:", e)
finally:
print("资源清理")
3.2 异常细分
异常类型 | 触发场景 |
---|
KeyError | 字典键不存在 |
IndexError | 索引越界 |
TypeError | 类型操作不匹配 |
FileNotFoundError | 文件未找到 |
3.3 自定义异常
class NetworkError(Exception):
def __init__(self, msg):
self.msg = msg
try:
raise NetworkError("连接超时")
except NetworkError as e:
print(e.msg) # 输出:连接超时
3.4 特殊场景
- finally与return:即使函数中有return,finally代码仍会执行。
- 上下文管理器:使用with语句自动管理资源(如文件操作)。
4. 反射
4.1 核心函数
函数 | 作用 | 示例 |
---|
getattr(obj, attr) | 获取对象属性/方法 | getattr(obj, "show")() |
setattr(obj, attr, value) | 设置对象属性 | setattr(obj, "name", "新值") |
hasattr(obj, attr) | 判断属性是否存在 | hasattr(obj, "wx") → True/False |
delattr(obj, attr) | 删除属性 | delattr(obj, "name") |
4.2 动态导入模块
from importlib import import_module
# 导入模块并获取类
module = import_module("requests.exceptions")
InvalidURL = getattr(module, "InvalidURL")
4.3 应用场景
- 插件化开发:根据配置文件动态加载类。
- API路由:通过URL路径映射到对应的处理函数。
def run_handler(handler_name):
handler = getattr(module, handler_name, None)
if handler:
handler()
else:
print("处理器不存在")