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

Python异常处理练习报错:ErrorBadNumber未定义及异常不触发问题

问题解决方法

1. 修复“Undefined name 'ErrorBadNumber'”错误

  • Python内置异常里没有ErrorBadNumber,它属于自定义异常类。如果getNumber是来自某个外部模块,先导入这个异常:
    from 对应模块名 import ErrorBadNumber, getNumber
    
  • 如果是练习要求你自行定义这个异常,先在代码里声明它:
    class ErrorBadNumber(Exception):
        pass  # 也可以添加自定义提示信息,比如:super().__init__("数字不符合要求")
    
  • 必须保证在调用getNumber或编写异常处理代码前,这个异常类已经被定义或导入,否则Python无法识别它。

2. 解决getNumber异常未触发的问题

  • 先搞清楚getNumber的逻辑:它在什么条件下会抛出ErrorBadNumber?比如输入非数字、数字超出指定范围等。
  • 调用getNumber时传入符合触发条件的参数。比如如果它要求输入正整数,就传负数或字符串测试:
    getNumber(-5)  # 假设负数会触发异常
    
  • 如果你是自己实现的getNumber,检查是否在对应条件下正确抛出了异常:
    def getNumber(num):
        if num <= 0:
            raise ErrorBadNumber("数字必须大于0")
        return num
    

完整示例代码

# 定义自定义异常
class ErrorBadNumber(Exception):
    def __init__(self, message="输入的数字无效"):
        super().__init__(message)

# 给定的getNumber函数示例
def getNumber(num):
    if not isinstance(num, int) or num < 1:
        raise ErrorBadNumber
    return num

# 你的调用函数getNumber_2
def getNumber_2(input_num):
    try:
        result = getNumber(input_num)
        print(f"有效数字:{result}")
    except ErrorBadNumber as e:
        print(f"捕获异常:{e}")

# 测试
getNumber_2(5)    # 正常执行,输出有效数字
getNumber_2(-3)   # 触发异常,输出捕获信息
getNumber_2("abc")# 触发异常,输出捕获信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:50:29