为什么定义的输入变量在异常发生后返回nil?

时间:2018-11-03 00:56:19

标签: ruby exception

我注意到在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?

1 个答案:

答案 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