首页 > 解决方案 > 救援后的空单引号是什么?

问题描述

 while t = Integer(gets.chomp) rescue ''
   if t.is_a? Integer
    break
   else
    print "Please enter a whole number "
   end
  end 

我只是想弄清楚为什么在救援之后我需要那些空单引号才能使这个循环工作。

标签: rubyexceptionsingle-quotesrescue

解决方案


这称为内联rescue。如果t = Integer(gets.chomp)引发任何继承自StandardError它的异常,将被救出并返回一个空字符串。你可以这样想:

begin
  do_something
rescue
  ''
end

这种方法的问题是您无法指定要从中救援的异常类,因此您可能会不小心掩盖您没有预料到的错误,例如拼写错误的方法NoMethodError时引发的错误:chomp

Integer(gets.chmp) rescue ''
#=> ""

推荐阅读