Exceptions

View saved

Rescue a failure

Wrap risky code in begin/rescue.

begin
  Integer("abc")
rescue ArgumentError => e
  puts "Could not parse: #{e.message}"
end

Raise your own

Raise when a method receives invalid input.

def find(id)
  raise ArgumentError, "id must be positive" if id <= 0
  "ok"
end

Ensure cleanup

ensure runs whether or not an error occurred.

begin
  puts "work"
ensure
  puts "cleanup"
end

Exception tips

  • Rescue specific classes when possible
  • Do not rescue StandardError silently everywhere
  • Use exceptions for exceptional cases, not normal branching
  • Let unexpected bugs surface during learning

Comments

One comment per signed-in account. Comments are saved with this page’s URL.