Ruby中重试错误用户输入的代码问题排查
你的Ruby代码存在这些问题:
String#to_i不会触发异常:Ruby里字符串转整数的to_i方法不会抛出错误,比如输入"abc"会返回0,所以你的rescue块永远不会执行,非数字输入根本不会触发重试逻辑。- 判断逻辑完全错误:就算
rescue能执行,retry if option >6的逻辑也不符合需求——你要的是输入不符合要求(比如数字超出范围或非有效数字)时重试,但这里只有当option大于6才重试,且判断放在rescue里完全不匹配场景。 - 缺少退出和返回逻辑:方法没有正确返回最终的有效输入,也没有在输入符合要求时退出循环,会导致无限执行。
修正后的示例代码:
def parse_param loop do option = gets.chomp.to_i # 假设要求输入1-6之间的整数 if option.between?(1, 6) return option else puts "输入无效,请输入1-6之间的数字" end end end
这个版本用loop循环替代begin-rescue-retry,直接判断输入是否符合要求,不符合就提示并继续循环,符合就返回结果,逻辑更清晰也更贴合需求。
内容的提问来源于stack exchange,提问作者mila002
相关产品推荐
相关产品推荐

