ruby
  1. ruby-exceptions

Ruby Exceptions

Exceptions are a way of handling unexpected situations or errors that may occur during program execution. In Ruby, exceptions are objects that represent an error condition. When an exception is raised, Ruby begins looking for a place in the code that can handle it, otherwise the program terminates.

Syntax

begin
  # Some code that may raise an exception
rescue [ExceptionType => e]
  # Some code to handle the exception
ensure
  # Some code that will be executed at the end, whether an exception occurred or not
end

Example

begin
  # Open a file
  file = File.open("non_existent_file.txt")
rescue Exception => e
  # Handle the error by printing the error message
  puts e.message
ensure
  # Close the file, if it was opened successfully
  file.close if file
end

Output

No such file or directory @ rb_sysopen - non_existent_file.txt

Explanation

In the above example, we try to open a file that does not exist. This operation raises an Errno::ENOENT exception, which is caught and handled by the rescue block. The ensure block is executed at the end, regardless of whether an exception occurred or not.

Use

Exceptions are commonly used for error handling in Ruby programs. They can be used to catch and handle errors, or to signal an error condition in a function or method.

Important Points

  • Exceptions in Ruby are objects that represent an error condition.
  • Exceptions are raised when an unexpected situation or error occurs during program execution.
  • The rescue block is used to catch and handle exceptions.
  • The ensure block is executed at the end, regardless of whether an exception occurred or not.
  • Ruby has a hierarchy of exception classes, with StandardError being the base class.

Summary

Exceptions are an important part of Ruby programming. They provide a way to handle unexpected situations or errors that may occur during program execution. By using the rescue and ensure blocks, we can gracefully handle exceptions and ensure that the program executes correctly.

Published on: