You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何在deduct_amount函数中用try-except在a<b时抛出ValueError

实现方案

原代码问题说明

  • 你写的b - a < 0只是普通布尔表达式,运算结果只有True/False,不会主动抛出任何异常,所以try-except逻辑完全不会触发
  • 错误提示中直接拼接数字类型的a、b和字符串,会触发类型错误
  • 你需要的是主动判断条件、主动抛出异常,不需要用try包裹判断逻辑

正确实现代码

主动判断a < b的条件,条件命中时用raise关键字抛出ValueError即可:

def deduct_amount(a, b):
    if a < b:
        # 主动抛出指定类型的异常,f-string自动处理类型转换
        raise ValueError(f"{a} can not be less than {b}")
    # 条件校验通过后执行扣款逻辑
    return a - b

调用示例

如果上层需要捕获这个异常做处理,可以在外层加try-except块:

# 正常扣款场景,返回3
print(deduct_amount(15, 12))

# 余额不足场景,捕获异常
try:
    deduct_amount(8, 12)
except ValueError as e:
    print(f"扣款失败:{e}")

内容的提问来源于stack exchange,提问作者Ada_lovelace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:06:05