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

