Rescue ステートメントは、さまざまなエラーを連続してフィルタリングする場合に役立ちます。
o = Object.new
begin
o.foo
rescue ArgumentError
puts "Object o does define #foo, but you got the argument number wrong!"
rescue NoMethodError
puts "Object o does not respond to #foo!"
else
puts "That's right!"
end
しかし、異なるパラメーターで同じエラーを解決する場合、これが私のコードで使用するものです。
o = Object.new
begin
o.foo
rescue NoMethodError
begin
o.bar
rescue NoMethodError
begin
o.quux
rescue NoMethodError
warn "Object o responds not to basic methods!"
end
end
end
言うまでもなく、私はそれが好きではありません。これを行うためのより賢い方法はありませんか?