我正在尝试创建用户定义的错误,如果用户仅输入其名字,则会引发错误并告诉用户再次尝试,或者如果他们输入数字,则会引发错误。
这是我的代码,但是当我运行它时输出"输入你的名字"然后,无论我输入全名,它都会拯救它。它仍然说"抱歉,我没有抓住它。"然后连接它:
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
答案 0 :(得分:0)
gets
会抓取您键入的所有内容。因此first
实际上包含您输入的名字和姓氏,然后last
为空。看起来它们正在连接,但所有文本都在first
中。如果输入您的名字,然后按 Enter ,然后输入您的第二个名字,那么它应输出两个名称。
错误未被提出。如果你想在最后一个空白时引发错误,你需要添加这样的东西:
last = gets.chomp
if last == ""
raise MyNewException, first
end