Python异常处理:什么时候捕获,什么时候继续抛出

捕获异常的目的,是在有能力处理问题的位置采取明确动作。把整个程序包在一个空的except里,会让错误消失在表面,却留下错误结果。

相互隔离的透明开发工作盒
浅色主题概念配图,选自本站AI生成图库;非事件现场或产品实测截图。

只包住可能失败的步骤

示例将输入转成整数,只在转换附近捕获TypeError和ValueError,再给调用方一个更清楚的错误说明。后续业务计算不应被顺手包进同一个大范围异常分支。

区分输入错误和程序错误

如果你知道输入不合法,应给出可理解的反馈;如果是内部状态异常,通常应保留证据继续抛出。不要用默认值零替代所有失败,否则用户可能把“没处理成功”误认为有效统计结果。

保留原因便于追查

使用raise … from exc可以把新的错误语境与原异常关联起来。日志与对外提示可采用不同详细程度:内部需要诊断上下文,公开响应则不应泄漏路径、凭据或内部实现。示例只处理整数字符串,不接受小数或负数。

可复制的练习

def parse_count(text):
    if not isinstance(text, str):
        raise ValueError("请输入整数字符串")
    try:
        value = int(text)
    except (TypeError, ValueError) as exc:
        raise ValueError("请输入整数字符串") from exc
    if value < 0:
        raise ValueError("数量不能为负数")
    return value

print(parse_count("12"))
try:
    parse_count("abc")
except ValueError as exc:
    print(exc)

本例在隔离的本地环境检查过,Python 3.14.4;下面列出对应运行结果。

12
请输入整数字符串

参考与延伸阅读

Python 官方文档。本文的学习步骤和练习为本站整理;涉及具体产品或工具时,请同时核对当前版本说明。

资料查阅与编辑日期:2026年9月22日。作者:玖柒。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享