miércoles, 21 de noviembre de 2007

Tema 8: Excepciones

En un programa en ejecución pueden suceder acciones inesperadas. Las excepciones tienen como función solucionar los problemas que dicahs acciones pueden ocasionar.


En Ruby podemos decir que una excepción es un objeto, que se crea cuando se da una situación

anómala durante la ejecución de nuestro código.


Sentencia rescue:

begin

# código susceptible de generar una excepción

rescue [tipo de excepción]

# código que trata el error producido

else

# Se ejecuta si no se produce la excepción

end


El bloque de código marcado con begin se ejecutará hasta que haya una excepción, lo que provoca que el control se transfiera a un bloque con el código de gestión de errores, aquel marcado con rescue.


Sentencia ensure:

begin

#código

rescue

#mas código

ensure

#codigo que se ejecutará siempre

end


El bloque de código de ensure se ejecuta independientemente de si se produce o no la excepción. tiene como finalidad realizar ciertas acciones cuando el método termina su ejecución.

Ensure debe colocarse al final de los rescues.


Sentencia retry:

begin

...

rescue

retry

end


Se puede utilizar la sentencia de control retry para repetir la iteración del código del bloque begin.


Sentencia raise:

begin
raise(ArgumentError, "error en el argumento")

rescue
puts $!

end


La sentencia raise es la encargada de lanzar las excepciones. La cadena que describe la excepción se le pasa como argumento. El argumento es opcional y en caso de no llevarlo crea una excepción RuntimeError o relanzaría la excepción capturada si nos encontraramos dentro de un rescue.


$! es una variable global especial que contiene el mensaje de la excepción. Si no se pasa mensaje de excepción, $! contiene el nombre de la clase a la que está asocidada.

No hay comentarios: