Ruby's rescue
syntax supports a couple different blocks. I was already
familiar with ensure
which is a block of code that will be executed
regardless of whether or not an exception was rescued.
begin
do_something_that_could_fail()
rescue StandardError => e
# oh no!
ensure
Logging.info("We attempted to do the thing.")
end
What if you want to differentiatee between an instance when your code ran
without incident and when there was an exception? Ruby's rescue
syntax also
supports an else
block. The else
block is executed only when nothing is
rescued.
begin
do_something_that_could_fail()
rescue StandardError => e
Logging.info("We tried to do something and it failed.")
else
Logging.info("We successfully did the thing!")
end
There are a lot of ways to use this. Here I was able to differentiate the messaging in my logging based on whether or not an exception occurred.