Guía del usuario de Ruby - Procesamiento de excepciones: ensure

27 - Procesamiento de excepciones: ensure

[editar]
Tutorial creado por matz. Extraido de: http://es.tldp.org/Manuales-LuCAS/doc-guia-usuario-ruby/doc-guia-usuario-ruby-html/
27 de Febrero de 2006
Cuando un método termina su ejecución puede que se necesiten ciertas labores de limpieza. Quizás se tenga que cerrar un fichero abierto, se deban liberar los datos de los buffers, etc. Si siempre hubiese un único punto de salida para cada método, se podría poner con seguridad todo el código de limpieza en un lugar concreto y saber que se ejecutará, sin embargo, un método podría retornar en varios lugares o el código de limpieza podría saltarse inesperadamente debido a una excepción.

|| begin
file = open("/tmp/algun_fichero","w")
# ... Escribimos en el fichero ...
file.close
end
||

En el ejemplo superior, si ocurre una excepción durante la parte del código en que se escribe en el fichero, éste quedará abierto. Si no deseamos recurrir al siguiente tipo de redundancia:

|| begin
file = open("/tmp/algun_fichero","w")
# ... Escribimos en el fichero ...
file.close
rescue
file.close
fail # levantamos una excepción
end
||

Que es desgarbada y se nos escapa de las manos cuando el código se vuelve más complicado debido a que hay que tratar todo return y break.

Por esta razón se añadió otra palabra reservada a esquema begin ... rescue ... end, ensure. El bloque de código de ensure se ejecuta independientemente del éxito o fracaso del bloque de código en begin.

|| begin
file = open("/tmp/algun_fichero","w")
# ... Escribimos en el fichero ...
rescue
# ... gestionamos las excepciones ...
ensure
file.close # ... Y esto se ejecuta siempre.
end
||

Se puede utilizar ensure sin rescue y viceversa, pero si se utilizan en el mismo bloque begin ... end, rescue debe preceder a ensure.
[editar]

5 opiniones

ejemplos

deberian colocar mas ejemplos =)
D:

y los atributos de la clase que?
bien

bien
Exelente.

Excelente traduccion de: http://www.rubyist.net/~slagell/ruby/singletonmethods.html
muy recomendable.
Bueno.

Muy bueno como introduccion a el leguaje de ruby.

Tutoriales relacionados con 'Guía del usuario de Ruby'

Autor y licencia de 'Guía del usuario de Ruby'

Licencia GNU Free Documentation License: http://www.es.gnu.org/licencias/fdles.html
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.