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

Python try-except块未触发正确异常:输入非整数误报num2hgh错误

问题原因及解决方法

核心原因

你把num2hgh直接赋值为Exception,而ValueError是Exception的子类。Python的异常捕获是按代码中except块的顺序匹配的,当输入abc触发ValueError时,第一个except num2hgh(本质是捕获所有Exception类型的异常)会先接住这个子类异常,导致后续专门处理ValueError的except块根本不会执行。

解决方法

不要直接用内置的Exception作为自定义异常的类型,应该定义一个专属的自定义异常类:

# 自定义专属异常类,继承自Exception
class NumTooHigh(Exception):
    pass

txt = 'enter your grade '
while True:
    try:
        grade = int(input(txt))
        print(grade)
        if grade > 100:
            raise NumTooHigh
    except NumTooHigh:
        txt = 'Grade to high, enter again: '
    except ValueError:
        txt = 'Please enter an integer; '
    else:
        break

这样NumTooHigh是独立的异常类型,只会捕获你主动抛出的这个异常,而ValueError会被对应的except块正确处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:37:05