diff --git a/README.md b/README.md index 28cf63b..81ba843 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,7 @@ smart people at [Hashrocket](http://hashrocket.com/). - [Evaluating One-Off Commands](ruby/evaluating-one-off-commands.md) - [FactoryGirl Sequences](ruby/factory-girl-sequences.md) - [Finding The Source of Ruby Methods](ruby/finding-the-source-of-ruby-methods.md) +- [Last Raised Exception In The Call Stack](ruby/last-raised-exception-in-the-call-stack.md) - [Limit Split](ruby/limit-split.md) - [Listing Local Variables](ruby/listing-local-variables.md) - [Next And Previous Floats](ruby/next-and-previous-floats.md) diff --git a/ruby/last-raised-exception-in-the-call-stack.md b/ruby/last-raised-exception-in-the-call-stack.md new file mode 100644 index 0000000..471bd16 --- /dev/null +++ b/ruby/last-raised-exception-in-the-call-stack.md @@ -0,0 +1,18 @@ +# Last Raised Exception In The Call Stack + +In Ruby, the `$!` global variable contains the last exception that was +raised in the current call stack. This makes it trivial to check what error +is being rescued even if it hasn't been captured in a local variable. + +```ruby +class MyError < StandardError; end + +def do_stuff + raise MyError +rescue + puts "rescuing #{$!}" +end + +do_stuff +#=> rescuing MyError +```