Python异常处理代码边界用例失败 求排查优化方案
Python异常处理函数故障排查
已知问题梳理
现有代码未覆盖的边界场景和不符合要求的逻辑如下:
- 非整数输入提示不匹配:当输入内容无法转换为整数时,
int()会抛出系统默认的ValueError(提示类似invalid literal for int() with base 10: 'xxx'),现有代码直接捕获输出该提示,和要求的自定义提示Input integers value out of range.不一致,这是最常见的未过用例原因。 - 异常未向外抛出:任务要求函数在条件不满足时抛出异常,但现有代码将所有异常在函数内部捕获、自行打印,外部调用方无法接收到抛出的异常,完全不符合功能要求。
- 边界值判断可能不符合要求:现有逻辑用
a<150、b>100、c>400做判断,如果题目要求允许边界值(比如a≤150、b≥100、c≤400),现有写法会错误拦截边界值输入。
健壮版代码实现
以下代码覆盖所有场景,同时支持「异常向外抛出」和「内部统一处理打印」两种需求,可根据任务要求调整:
def Handle_Exc1(): # 读取输入并校验格式 try: a = int(input()) b = int(input()) except ValueError: # 非整数输入统一抛出/输出自定义提示 err = ValueError('Input integers value out of range.') # 如果要求函数抛出异常,保留下面的raise,注释print raise err # 如果要求内部处理打印,保留下面的print,注释raise # print(err) return # 校验输入值范围 if not (a < 150 and b > 100): # 若要求边界值包含等于,修改条件为 a <=150 and b >=100 err = ValueError('Input integers value out of range.') raise err # print(err) return # 校验和的范围 c = a + b if c > 400: # 若要求和的边界为小于400,修改条件为 c >=400 err = ValueError('Their sum is out of range') raise err # print(err) return # 所有校验通过 print("All in range")
未过用例验证方式
可以用以下边界输入测试,确认问题:
- 输入非整数:比如第一个输入填
abc,看输出是否符合要求 - 输入边界值:
a=150、b=100、c=400,看判断逻辑是否符合预期 - 外部调用校验异常:测试函数是否能正确向外抛出对应类型的异常
内容的提问来源于stack exchange,提问作者Mahesh Hegde
相关产品推荐
相关产品推荐

