Menu
Coddy logo textTech

¿Qué es una excepción?

Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 43 de 56.

Cuando algo sale mal en tiempo de ejecución, al dividir por cero, analizar "abc" como un entero o llamar a un método en nil: Ruby lanza una excepción. El programa se detiene y Ruby imprime lo que sucedió junto con el lugar donde ocurrió.

10 / 0
# ZeroDivisionError: dividido por 0

Cada tipo de fallo es su propia clase. Algunos comunes:

  • ZeroDivisionError: dividir un entero por cero
  • ArgumentError: argumentos incorrectos pasados a un método (Integer("abc"))
  • NoMethodError: llamar a un método que el receptor no tiene (nil.upcase)
  • TypeError: operación en el tipo de objeto incorrecto ("a" + 1)

Cada clase de excepción tiene un .message: la descripción legible por humanos que Ruby imprime cuando la excepción no se maneja. Las siguientes lecciones muestran cómo capturar estas excepciones para que tu programa siga ejecutándose.

challenge icon

Desafío

Principiante

Lee una sola línea de entrada, el nombre de una sola expresión de Ruby. Imprime el nombre de la clase de excepción que Ruby lanzaría para ella. Usa una sentencia case (no es necesario realizar un lanzamiento real):

  • divide-by-zeroZeroDivisionError
  • nil-methodNoMethodError
  • bad-integerArgumentError
  • wrong-typeTypeError
  • cualquier otra cosa → Unknown

Para la entrada nil-method, la salida es NoMethodError.

Hoja de referencia

Cuando algo sale mal en tiempo de ejecución, Ruby lanza una excepción y el programa se detiene. Clases de excepción comunes:

  • ZeroDivisionError: dividir un entero por cero
  • ArgumentError: argumentos incorrectos (p. ej. Integer("abc"))
  • NoMethodError: llamar a un método que el receptor no tiene (p. ej. nil.upcase)
  • TypeError: operación en el tipo de objeto incorrecto (p. ej. "a" + 1)
10 / 0
# ZeroDivisionError: dividido por 0

Cada objeto de excepción tiene un .message con una descripción legible por humanos.

Pruébalo tú mismo

kind = gets.chomp

# TODO: case kind ... imprimir el nombre de la clase de excepción coincidente
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo