Python:如何在条件不满足时让函数彻底终止并报错?
修改后的Python函数实现
1. get_source_path 函数(确保文件存在)
负责校验输入路径的有效性,确保对应文件存在且是合法文件。
import os import tomllib # Python 3.11+ 内置,低版本可使用第三方库 tomli def get_source_path(file_path: str) -> str: """获取文件路径并确保文件存在且为合法文件""" if not os.path.exists(file_path): raise FileNotFoundError(f"指定文件不存在: {file_path}") if not os.path.isfile(file_path): raise IsADirectoryError(f"指定路径不是有效文件: {file_path}") return file_path
2. check_toml 函数(校验并抛出明确错误)
替换原打印错误的逻辑,在校验失败时直接抛出针对性异常,校验通过则返回解析后的TOML字典。
def check_toml(file_path: str) -> dict: """校验TOML文件的default表及必填字段,失败抛出错误,成功返回解析结果""" # 先通过get_source_path确保文件合法 valid_path = get_source_path(file_path) # 读取并解析TOML文件 with open(valid_path, "rb") as f: toml_dict = tomllib.load(f) # 检查default表是否存在 if "default" not in toml_dict: raise ValueError("TOML文件中缺失必填的'default'配置表") default_table = toml_dict["default"] # 校验三个必填字段的有效性 required_fields = ["conf_path", "prefix", "suffix"] for field in required_fields: if field not in default_table: raise ValueError(f"'default'表中缺失必填字段: {field}") field_value = default_table[field] if field_value is None or (isinstance(field_value, str) and field_value.strip() == ""): raise ValueError(f"'default'表中字段'{field}'的值不能为空或None") # 所有校验通过,返回解析后的配置字典 return toml_dict
关键修改说明
- 用明确的异常抛出替代原打印逻辑,异常类型(
FileNotFoundError/ValueError)和错误信息清晰,调用方可以选择捕获处理或直接让程序终止。 - 覆盖所有校验场景:文件合法性、default表存在性、字段存在性、字段值非空性,每个校验点都有针对性的错误提示。
- 正常流程下返回解析完成的TOML字典,满足业务后续使用需求。
使用示例
try: config = check_toml("your_config.toml") print("配置校验通过,开始执行业务逻辑...") # 这里写后续业务代码 except (FileNotFoundError, ValueError, IsADirectoryError) as e: print(f"配置校验失败: {e}") exit(1) # 直接终止程序
内容的提问来源于stack exchange,提问作者uncrayon
相关产品推荐
相关产品推荐

