El manejo de excepciones es una parte crucial de la programación, ya que permite a los desarrolladores gestionar errores de manera controlada y evitar que los programas se detengan inesperadamente. En Ruby, el manejo de excepciones se realiza utilizando las palabras clave begin, rescue, ensure y raise.

Conceptos Clave

  1. Excepciones: Son eventos que ocurren durante la ejecución de un programa y que interrumpen el flujo normal de instrucciones.
  2. Bloques begin y rescue: Se utilizan para capturar y manejar excepciones.
  3. Bloque ensure: Se utiliza para ejecutar código que debe ejecutarse sin importar si se produjo una excepción o no.
  4. Método raise: Se utiliza para generar una excepción manualmente.

Estructura Básica

La estructura básica para manejar excepciones en Ruby es la siguiente:

begin
  # Código que puede generar una excepción
rescue SomeExceptionClass => e
  # Código para manejar la excepción
ensure
  # Código que se ejecuta siempre, con o sin excepción
end

Ejemplo Práctico

Vamos a ver un ejemplo práctico para entender mejor cómo funciona el manejo de excepciones en Ruby.

def divide(a, b)
  begin
    result = a / b
  rescue ZeroDivisionError => e
    puts "Error: División por cero no permitida."
    result = nil
  ensure
    puts "Operación de división completada."
  end
  result
end

puts divide(10, 2)  # Salida: 5
puts divide(10, 0)  # Salida: Error: División por cero no permitida.
                    #         Operación de división completada.
                    #         nil

Explicación del Código

  1. Bloque begin: Contiene el código que puede generar una excepción, en este caso, una división.
  2. Bloque rescue: Captura la excepción ZeroDivisionError y ejecuta el código para manejarla.
  3. Bloque ensure: Este bloque se ejecuta siempre, independientemente de si se produjo una excepción o no.
  4. Método raise: No se utiliza en este ejemplo, pero se puede usar para generar excepciones manualmente.

Ejercicio Práctico

Ejercicio 1: Manejo de Excepciones en un Programa de Conversión de Texto a Número

Escribe un programa que convierta una cadena de texto a un número entero. Si la cadena no puede convertirse a un número, el programa debe manejar la excepción y mostrar un mensaje de error.

def convert_to_integer(str)
  begin
    number = Integer(str)
    puts "El número convertido es: #{number}"
  rescue ArgumentError => e
    puts "Error: La cadena '#{str}' no puede convertirse a un número."
  ensure
    puts "Operación de conversión completada."
  end
end

# Prueba el método con diferentes entradas
convert_to_integer("123")  # Salida: El número convertido es: 123
                           #         Operación de conversión completada.
convert_to_integer("abc")  # Salida: Error: La cadena 'abc' no puede convertirse a un número.
                           #         Operación de conversión completada.

Solución del Ejercicio

El código anterior muestra cómo manejar la excepción ArgumentError que se genera cuando se intenta convertir una cadena no numérica a un número entero. El bloque ensure asegura que el mensaje "Operación de conversión completada." se muestre siempre, independientemente de si se produjo una excepción o no.

Resumen

En esta sección, hemos aprendido sobre el manejo de excepciones en Ruby, incluyendo cómo utilizar los bloques begin, rescue, ensure y el método raise. También hemos visto ejemplos prácticos y ejercicios para reforzar los conceptos aprendidos. El manejo adecuado de excepciones es esencial para crear programas robustos y confiables, y es una habilidad fundamental para cualquier programador de Ruby.

En el próximo tema, exploraremos las Expresiones Regulares en Ruby, una herramienta poderosa para trabajar con cadenas de texto.

© Copyright 2024. Todos los derechos reservados