Tratamiento de excepciones en Ruby

en RubyExceptionException handling

Declaración y captura de excepciones en Ruby

En muchos lenguajes de programación existen excepciones. Las excepciones sirven para controlar varios tipos de errores que pueden suceder durante la execución de un programa. Cuando ocurre el error, con las excepciones se puede capturar para tratarlo en vez de terminar el programa por completo.

En Ruby on Rails, el tratamiento de excepciones se encapsula entre cláusulas begin y end de la siguiente forma:

1
2
3
4
5
6
7
8
9
10
11
begin
        # codigo...
rescue TIPO_EXCEPCION_1
        STDERR.puts "Ha ocurrido un problema de tipo 1"
rescue TIPO_EXCEPCION_2
        STDERR.puts "Ha ocurrido un problema de tipo 2"
else
        STDERR.puts "Ha ocurrido otro problema"
ensure
        # se ejecuta siempre haya o no excepción
end

Tipos de excepciones

A continuación mostramos los tipos de excepciones de Ruby:

  • Exception
    • fatal
    • NoMemoryError
    • ScriptError
      • LoadError
      • NotImplementedError
      • SyntaxError
    • SignalException
      • Interrupt
    • StandardError
      • ArgumentError
      • IOError
        • EOFError
      • IndexError
      • LocalJumpError
      • NameError
        • NoMethodError
      • RangeError
        • FloatDomainError
      • RegexpError
      • RuntimeError
      • SecurityError
      • SystemCallError
        • Errorno::__ (ENOENT, etc.) (system-dependent)
      • ThreadError
      • TypeError
      • ZeroDivisionError
    • SystemExit
    • SystemStackError

Alzar excepciones

Podemos lanzar excepciones propias usando la palabra raise:

1
2
3
4
def metodo_que_lanza_excepcion
raise "error 1"
end
metodo_que_lanza_excepcion rescue puts $!

El código anterior definimos un método y luego fuera de este método definimos qué pasará cuando se lanze la excepción. En este ejemplo imprimimos con el comando puts el mensaje que se passa por parámetro: "error 1"

Prohibida la reproducción total o parcial de este artículo sin el previo consentimiento de Webtutoriales.com

Comentarios