errors/rescue_handler_shapes_no_parens.rb
tests/_examples/errors/rescue_handler_shapes_no_parens.rb in the metorex repository.
handled = [ArgumentError, TypeError]
puts (begin
raise TypeError, "wrong"
rescue RuntimeError, *handled
:caught
end).to_s
chooser = Class.new
def chooser.===(error)
error.message == "mine"
end
puts (begin
raise "mine"
rescue chooser
:by_case_equality
rescue RuntimeError
:by_class
end).to_s
not_a_class = 42
begin
begin
raise "stopped"
rescue not_a_class
:never
end
rescue TypeError => error
puts error.message
end
class Holder
attr_accessor :captured
end
held = Holder.new
begin
raise "held"
rescue RuntimeError => held.captured
end
puts held.captured.message
begin
raise "global"
rescue RuntimeError => $captured
end
puts $captured.message
first, second = raise rescue [1, 2]
puts [first, second].inspect
["begin\n 1\nelse\n 2\nend", "1.+(1 rescue 1)", "a = 1 rescue RuntimeError 2"].each do |source|
begin
eval source
puts "no error"
rescue SyntaxError
puts "SyntaxError"
end
end
Output:
caught
by_case_equality
class or module required for rescue clause
held
global
[1, 2]
SyntaxError
SyntaxError
SyntaxError