Ruby equivalent for Python's "try"?

51.7k views Asked by At

I'm trying to convert some Python code into Ruby. Is there an equivalent in Ruby to the try statement in Python?

3

There are 3 answers

4
Óscar López On BEST ANSWER

Use this as an example:

begin  # "try" block
    puts 'I am before the raise.'  
    raise 'An error has occurred.' # optionally: `raise Exception, "message"`
    puts 'I am after the raise.'   # won't be executed
rescue # optionally: `rescue StandardError => ex`
    puts 'I am rescued.'
ensure # will always get executed
    puts 'Always gets executed.'
end 

The equivalent code in Python would be:

try:     # try block
    print('I am before the raise.')
    raise Exception('An error has occurred.') # throw an exception
    print('I am after the raise.')            # won't be executed
except:  # optionally: `except Exception as ex:`
    print('I am rescued.')
finally: # will always get executed
    print('Always gets executed.')
1
zengr On
 begin
     some_code
 rescue
      handle_error  
 ensure 
     this_code_is_always_executed
 end

Details: http://crodrigues.com/try-catch-finally-equivalent-in-ruby/

0
Zags On

If you want to catch a particular type of exception, use:

begin
    # Code
rescue ErrorClass
    # Handle Error
ensure
    # Optional block for code that is always executed
end

This approach is preferable to a bare "rescue" block as "rescue" with no arguments will catch a StandardError or any child class thereof, including NameError and TypeError.

Here is an example:

begin
    raise "Error"
rescue RuntimeError
    puts "Runtime error encountered and rescued."
end