rescue
ステートメントの後にクラスまたはモジュールを置くことができますが、以下のコードでrescue
は、このパターンに適合しない の後にメソッドが表示されます。どのように機能し、表示するように設計された出力をどのように生成していますか?
def errors_with_message(pattern)
# Generate an anonymous "matcher module" with a custom threequals
m = Module.new
(class << m; self; end).instance_eval do
define_method(:===) do |e|
pattern === e.message
end
end
m
end
puts "About to raise"
begin
raise "Timeout while reading from socket"
rescue errors_with_message(/socket/)
puts "Ignoring socket error"
end
puts "Continuing..."
出力
About to raise
Ignoring socket error
Continuing...