Мне нужно создать программу, в которой я должен попросить пользователя указать свое имя и фамилию на одной строке. Если пользователь ставит только свое первое имя ИЛИ, оно будет отклонено через исключение. Я продолжаю получать ошибку в конце (ниже).Ошибка инициализации Ruby Исключение
class MyNewException < Exception
attr_accessor :first, :last
def initialize (first, last)
@first = first
@last = last
end
end
print "Enter your first and last name:"
begin
first, last = gets.chomp.split
print "Hello," + first + " " + last + "!"
if last.size == 0
raise MyNewException, "Sorry, I didn't catch that! Try again:"
end
rescue MyNewException
puts "Sorry, I didn't catch that. Try again:"
retry
end
получаю сообщение об ошибке:
testing.rb:15:in `+': no implicit conversion of nil into String (TypeError)
добавить значение по умолчанию определения функции инициализации (первый = ноль, последний = ноль) ' – Beginner
Две ошибки здесь: одна из них - отсутствие запятой (' raise MyNewException ", извините, я не совсем понял это! Повторите попытку:" ') или явное построение исключения (' raise MyNewException.new ("Извините, Я не совсем понял это! Повторите попытку: ")'); другой - неправильный конструктор для вашего исключения. Почему у вашего исключения есть имя? :) Исключения обычно имеют только сообщение в своем конструкторе по умолчанию. Если вы действительно хотите создать пользовательское исключение с именем, вы должны поднять его с помощью 'raise MyNewException.new ('John', 'Doe')'. – Amadan
@NewbeeDev Спасибо, что сработал! Кроме того, должен ли я создать цикл в рамках спасения, чтобы запросить у пользователя полное имя? –