errors/ensure_return_drops_error_no_parens.rb
tests/_examples/errors/ensure_return_drops_error_no_parens.rb in the metorex repository.
# An ensure clause that leaves by `return` drops the exception in flight, so
# `$!` names whatever it named before the begin.
def dropped
begin
raise "lost"
ensure
return :returned
end
end
p dropped
p $!
begin
raise "outer"
rescue
p dropped
p $!.message
end
Output:
:returned
nil
:returned
"outer"