Ответ 1
def ignore_exception
begin
yield
rescue Exception
end
end
Теперь напишите код как
ignore_exception { puts "Ignoring Exception"; raise Exception; puts "This is Ignored" }
Я ищу что-то вроде этого:
raise Exception rescue nil
Но самый короткий способ, который я нашел, это следующее:
begin
raise Exception
rescue Exception
end
def ignore_exception
begin
yield
rescue Exception
end
end
Теперь напишите код как
ignore_exception { puts "Ignoring Exception"; raise Exception; puts "This is Ignored" }
Это обеспечивается ActiveSupport:
suppress(Exception) do
# dangerous code here
end
http://api.rubyonrails.org/classes/Kernel.html#method-i-suppress
Просто скопируйте левую сторону в скобках:
(raise RuntimeError, "foo") rescue 'yahoo'
Обратите внимание, что спасение произойдет только в том случае, если исключение является стандартным или его подклассом. Подробнее см. http://ruby.runpaint.org/exceptions.