AD

¿Ya dominas lo básico? Un curso estructurado de Ruby es la vía rápida para dar el salto.

Ver cursos de Ruby en Udemy

Enlace de afiliado. No te cuesta nada extra.

💎Lecciones de Ruby
Lección 50 / 68

Limpieza con begin/rescue/ensure

En esta lección ejecutarás código de limpieza tanto si hay error como si no.

El bloque ensure se ejecuta siempre: al terminar bien, al capturar un error e incluso al salir del método con return. Es el sitio donde va lo que hay que hacer sí o sí: cerrar un archivo, soltar una conexión, liberar un bloqueo.

El código de ejemplo divide dos veces y deja ver que el mensaje de cierre aparece en ambos casos.

Hay una regla que no conviene romper: no pongas un return dentro de ensure. Si lo haces, ese valor sustituye al que iba a devolver el método y, peor aún, se traga la excepción que estaba subiendo. Un error desaparece sin dejar rastro y el programa continúa como si nada. Es de los fallos más difíciles de diagnosticar que se pueden escribir en Ruby.

En la práctica, muchos métodos de Ruby ya hacen esto por ti si les pasas un bloque: File.open("x") { |f| ... } cierra el archivo al salir del bloque pase lo que pase. Cuando exista esa forma con bloque, es preferible a escribir el ensure a mano.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Ruby directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)