Невозможно поймать исключение в Ruby - PullRequest
2 голосов
/ 11 августа 2009

У меня есть что-то вроде этого:

class Vehicle

  def self.set_color(input)
     if %w{blue red green}.include?(input)
       input
     else
       raise "Bad color"
     end
  end

end

class Car < Vehicle

   def make_car
      begin
        my_color = Vehicle.set_color("orange")
      rescue
        puts "you screwed the pooch"
      end
   end

end

class CarTest < Test::Unit::TestCase
   def test_number_one
     c = Car.new
     c.make_car
   end
end

Но по какой-то причине мой тест поднимает исключение и останавливает выполнение вместо того, чтобы перехватить его и вывести «ты испортил собаку». Есть идеи, почему это происходит и как это исправить?

Спасибо!

Ответы [ 2 ]

11 голосов
/ 11 августа 2009

спасение без аргумента не является «ловушкой» для исключений.

Если вы просто выполните «спасение», оно спасет только исключение StandardError (которое будет перехватывать RuntimeError

Если вы действительно хотите поймать все , вы должны сделать


rescue Exception
0 голосов
/ 11 августа 2009

Я на 99% уверен, что "in" - это защищенное ключевое слово в ruby. Попробуйте использовать другое имя переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...