Ruby Exception Handling Tutorial

Advertisement

Advertisement

Introduction

Exceptions are a way of handling execution flow when an error occurs. This will show some examples of how to raise and handle exceptions, how to create custom exception classes, and how to detect if no exceptions are raised.

Simple begin/rescue example

This rescue will catch any exception. The raise is creating a generic exception with no message.

begin
  raise
rescue 
  puts 'Caught an exception!'
end

Begin/rescue with more information

This is similar to the previous example except more information is provided in the error handling.

begin
  raise 'Some error happened!'
rescue Exception => e
  puts 'Caught an exception!'
  puts e.message
  puts e.backtrace.inspect
end

Create custom exception classes

You can create custom exception classes by inheriting from StandardError object. Read more about StandardError at https://ruby-doc.org/core-2.6.3/StandardError.html.

class MyException < StandardError
end

begin
    raise MyException.new 'Error!'
rescue MyException => e
    puts e
end

Catch multiple exceptions

This is an example of catching different kinds of exceptions. Optionally you can store and reference the exception. Optionally you can have a catch-all case. Optionally you can have an else statement that runs if no rescues happen.

begin
    raise SomeExceptionClass
rescue SomeExceptionClass
    puts 'Rescued from Some Exception'
rescue ThatExceptionClass => e
    puts 'Rescued from That Exception'
    puts e
rescue
    puts 'Some other exception caught.'
end

Detect when no exceptions are raised

The else statement inside a begin block can be used to execute code when no exceptions are raised, indiciating the block ran without error.

begin
    puts 'Working smoothly.'
rescue
    puts 'Error detected.'
else
    puts 'No errors detected'
end

Conclusion

This should give you a very basic idea of how to use exceptions in Ruby for error handling.

References

Advertisement

Advertisement