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

只包住可能失败的步骤
示例将输入转成整数,只在转换附近捕获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







