rescueしたい例外を配列で指定
begin raise ArgumentError rescue ArgumentError, NoMethodError puts $!.class.name end
出力結果
ArgumentError
Rubyではこんな風にrescueには複数の例外のクラスを記述できるけど、このrescueしたい例外クラス群を配列で指定したい。
まずは、rescue以後をメソッドの引数みたいに括弧で括ってみる
begin raise ArgumentError rescue(ArgumentError, NoMethodError) puts $!.class.name end
結果
SyntaxError: compile error (irb):29: syntax error, unexpected ')', expecting '=' (irb):31: syntax error, unexpected kEND, expecting ')' from (irb):31
NG。rescueの後ろには、括弧は使えません。
http://www.ruby-lang.org/ja/man/html/_C0A9B8E6B9BDC2A4.html#rescue.bd.a4.be.fe.bb.d2
でも、*を使うことはできる
a = [ArgumentError, NoMethodError] begin raise ArgumentError rescue *a puts $!.class.name end begin raise NoMethodError rescue *a puts $!.class.name end
出力結果
ArgumentError NoMethodError
なるほどねー。