2016-12-05 13 views
-1

ユーザー定義のエラーを作成しようとしていますが、ユーザーが最初の名前のみを入力すると、エラーが発生し、ユーザーに再試行するか、数字を入力すると、エラーが発生します。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

私はあなたのコードをirbにコピーしたときにうまくいきました。 –

+0

問題を再現できません。 –

答えて

0

getsあなたはを入力しを押す前に入力し、すべてをつかむだろう。したがって、firstには実際に入力する姓と名が含まれており、次にlastは空です。それらは連結されているように見えますが、すべてのテキストはfirstです。あなたの名前を入力した場合は、を入力してと入力し、2番目の名前を入力すると両方の名前が出力されます。

エラーは発生していません。最後に空白のときにエラーを発生させたい場合は、次のように追加する必要があります。

last = gets.chomp 
if last == "" 
    raise MyNewException, first 
end 
関連する問題