概要
例外の捕捉
詳細
・例外の指定を省略すると標準エラーを補足します
・例外の指定は複数列挙可能
・補足した例外は「$!」で参照可能
サンプルコード
# encoding: Windows-31J require "pp" def print_eval(str, binding=nil) print "\(#{str}\) => " puts eval(str, binding) end def divide_number(number,divide) begin # Javaのtryと同様 puts "input (#{number},#{divide})" number/divide rescue TypeError,ZeroDivisionError print_eval("$!", binding) "unknown" rescue # 省略すると標準エラー全般を補足する print_eval("$!", binding) "unknown" end end puts "4/2=#{divide_number(4,2)}" puts "--------------------------------------------------" puts "4/a=#{divide_number(4,"a")}" puts "4/a=#{divide_number(4,0)}" puts "4/a=#{divide_number(nil,nil)}"
出力
input (4,2) 4/2=2 -------------------------------------------------- input (4,a) ($!) => String can't be coerced into Fixnum 4/a=unknown input (4,0) ($!) => divided by 0 4/a=unknown input (,) ($!) => undefined method `/' for nil:NilClass 4/a=unknown