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
相关产品推荐
相关产品推荐

