rescue/raise_instance_without_cause.rb
tests/_examples/rescue/raise_instance_without_cause.rb in the metorex repository.
def reraise_plain
raise "original"
rescue => error
raise ArgumentError.new("replacement")
end
def reraise_without_cause
raise "original"
rescue => error
replacement = NameError.new("replacement", :name)
replacement.set_backtrace(error.backtrace)
raise replacement, cause: nil
end
begin
reraise_plain
rescue => error
p error.cause&.message
end
begin
reraise_without_cause
rescue => error
p error.cause
end
Output:
"original"
nil