Ruby:
Manejo de errores

Cómo hacerlo:

Ruby utiliza begin, rescue, ensure y end para manejar errores. Envuelves el código de riesgo entre begin y end. Si ocurre un error, se activa rescue.

begin
  # El código de riesgo va aquí.
  puts 10 / 0
rescue ZeroDivisionError => e
  puts "¡Ups! No puedes hacer eso: #{e.message}"
ensure
  puts "Esto siempre se ejecuta, haya error o no."
end

Salida de muestra:

¡Ups! No puedes hacer eso: dividido por 0
Esto siempre se ejecuta, haya error o no.

Profundizando

Históricamente, el manejo de errores en los lenguajes de programación ha evolucionado significativamente, con lenguajes antiguos a menudo teniendo mecanismos rudimentarios o inexistentes. El manejo de excepciones de Ruby se inspira en lenguajes como Python y Smalltalk.

Alternativas a begin-rescue en Ruby incluyen usar rescue en definiciones de métodos o emplear throw y catch para el control de flujo no estándar, aunque no se usan para el manejo de errores típico.

Un detalle interesante: las excepciones en Ruby son objetos (instancias de la clase Exception y sus descendientes), así que puedes definir clases de error personalizadas y hacer más que solo registrar errores — puedes llevar un estado rico a través del programa para un manejo de errores más robusto.

Ver también

  • La documentación de Ruby sobre excepciones y manejo de errores: ruby-doc.org
  • Una guía detallada sobre las mejores prácticas para el manejo de errores en Ruby: thoughtbot.com