59

Just a quick question. I cant find it in the documentation.

If I use a standard begin ... rescue, how do I print all the errors or stack trace into the rescue?

e.g.:

begin 
    do x
rescue
    puts errors
end

Any ideas?

azgolfer
  • 15,087
  • 4
  • 49
  • 46
overtone
  • 1,063
  • 3
  • 16
  • 23

1 Answers1

92

There are at least two ways that I know of to get the error. The first is using a global variable: $! which is always set to the last error that occurred. The second is by explicitly capturing the error when you rescue:

begin
  # do something that fails...
rescue => error
  # error and $! are equivalent here
end

Either one will let you inspect or print out the backtrace using either:

$!.backtrace # => array of backtrace steps
error.backtrace # => same error
Peter Brown
  • 50,956
  • 18
  • 113
  • 146