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

Python脚本中Try/Except无法捕获ValueError的原因咨询

乘法表脚本异常处理失效的原因分析

你遇到的这个问题其实是异常处理的范围没搞对——咱们先拆解下代码里的核心问题:

你的try块仅仅包裹了函数mult()的定义,而真正会触发ValueError的int(num)操作,是在你调用mult()的时候才执行的,而这个调用是在try块外面的!

换句话说:你把“可能出问题的代码”(也就是int(num))放在了异常防护的范围之外,当它抛出错误时,根本没有对应的except块能接住,自然就直接弹出Traceback了。

修复方案

咱们可以调整代码结构,把可能触发异常的操作放进try块里,同时优化下代码逻辑(没必要每次循环都重新定义函数):

# shows multiplication table of a number upto that number
import time

# 把函数定义移到循环外,避免重复定义
def mult(num):
    for i in range(1, num + 1):
        # 用f-string让输出更简洁易读
        print(f"{i} x {num} = {i * num}")

while True:
    num_input = input("Enter number: ")
    try:
        # 在这里完成类型转换,把可能的异常接住
        num = int(num_input)
        # 转换成功再调用函数
        mult(num)
    except ValueError:
        print("Please enter a number")
        continue
    time.sleep(2)

额外优化说明

  • 把函数定义移到while循环外面,避免每次循环都重新创建一次函数,运行更高效;
  • 提前在try块里完成输入到整数的转换,让函数只负责生成乘法表,职责划分更清晰;
  • 使用f-string替代字符串拼接,代码更简洁,可读性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 18:22:56