我注意到在Ruby中使用begin/rescue
块的这种奇怪行为,当我定义一个变量并发生异常时,我尝试调用发生该异常的变量返回nil
。
例如:
begin
print "Enter a number: "
input = Integer(gets.chomp)
sum = input + 5
puts "This is your number plus five: #{sum}"
rescue ArgumentError
puts "#{input}" #This outputs nil
end
为什么begin/rescue
块会这样工作,并且有一种方法可以打印变量而不返回nil?
答案 0 :(得分:5)
我不确定这不是您想要的,但我尝试
input = gets.chomp
begin
number = Integer(input)
puts "your number plus five: #{number + 5}"
rescue ArgumentError
puts "#{input} is not a valid number"
end