如何从用户输入在Ruby中创建用户定义的异常

时间:2016-12-05 23:39:44

标签: ruby

我正在尝试创建用户定义的错误,如果用户仅输入其名字,则会引发错误并告诉用户再次尝试,或者如果他们输入数字,则会引发错误。

这是我的代码,但是当我运行它时输出"输入你的名字"然后,无论我输入全名,它都会拯救它。它仍然说"抱歉,我没有抓住它。"然后连接它:

class MyNewException < Exception
  attr_reader :first, :last

  def initialize(first)
    @first = first
  end
end

print "Enter your first and last name: "

begin

first = gets.chomp
last = gets.chomp

#prompt the user to enter first and last name
rescue MyNewException
  puts "Sorry I didn't quite catch that. Try again."
  gets
else
  puts "Hello, " + first + last + "!"
end

1 个答案:

答案 0 :(得分:0)

在按 Enter 之前,

gets会抓取您键入的所有内容。因此first实际上包含您输入的名字和姓氏,然后last为空。看起来它们正在连接,但所有文本都在first中。如果输入您的名字,然后按 Enter ,然后输入您的第二个名字,那么它应输出两个名称。

错误未被提出。如果你想在最后一个空白时引发错误,你需要添加这样的东西:

last = gets.chomp
if last == ""
  raise MyNewException, first
end