为什么仅仅使用 if 不够:深入理解 Python 中的 try/except

发布: (2025年12月20日 GMT+8 19:29)
2 分钟阅读
原文: Dev.to

Source: Dev.to

关于 “Why if Is Not Enough: Understanding try/except in Python” 的封面图片

为什么仅靠 if 不够

当我在 Python 中编写小费计算器(完整代码可查看我的 GitHub)时,我发现即使使用了 if 条件,错误仍然会发生。

原因在于 if 条件是在类型转换 之后 执行的,而错误发生在 转换本身 的过程中。

def get_bill_amount(prompt: str) -> float:
    while True:
        value = input(prompt).strip()
        try:
            amount = float(value)
            if amount > 0:
                return amount
            print("Amount must be greater than 0.")
        except ValueError:
            print("Please enter a valid number.")
  • 期望的用户输入: 大于 0 的数字
  • 类型不匹配: 当用户输入类似 abc 的字符串时
  • 错误: 程序因 ValueError: could not convert string to float 而崩溃

关键在于 float(value) 是一个风险操作。如果转换失败,Python 会在检查 if 条件之前抛出错误。

使用 value.isdigit() 看似安全,但它会对合法输入如 12.5-3,甚至带空格的 10 失效。这正是 try/except 存在的原因。

经验法则

  • if → 检查逻辑(规则、范围、条件)
  • try/except → 捕获崩溃(如类型转换等无效操作)

始终使用 if 来验证规则,使用 try/except 来防止程序崩溃。

Back to Blog

相关文章

阅读更多 »

数据架构师大师专业工作簿

概述:我构建了一个模块化、可审计的数据工程项目,并希望与社区分享。特性——干净的、生产级别的 Python——SQL pat...

记录我的学习之旅第36天

我今天做了什么——学习了 Python 中的 dunder 魔法方法。魔法方法 / dunder 方法 Python 提供了许多特殊方法,它们的名称以双下划线(__)开头并以双下划线(__)结尾。