¿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 0Cada tipo de fallo es su propia clase. Algunos comunes:
ZeroDivisionError: dividir un entero por ceroArgumentError: 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.
Desafío
PrincipianteLee 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-zero→ZeroDivisionErrornil-method→NoMethodErrorbad-integer→ArgumentErrorwrong-type→TypeError- cualquier otra cosa →
Unknown
Para la entrada nil-method, la salida es NoMethodError.
Pruébalo tú mismo
kind = gets.chomp
# TODO: case kind ... imprimir el nombre de la clase de excepción coincidente
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
1Cadenas en profundidad
Descripción general de los métodos de cadenasInterpolación de cadenasIteración sobre cadenasSeparar y unirRepaso: Tejedor de cadenas4Bloques, Procs y Lambdas
¿Qué es un bloque?do..end frente a llavesLa palabra clave yieldParámetros de bloqueProcs y LambdasRepaso: iterador personalizado7Hashes Parte 2
Hash.new con valores predeterminadosIteración de hashesHashes anidadosCombinación y transformaciónRepaso: contador de frecuencias10Proyecto - Registros de estudiantes
Descripción general del proyectoAgregar estudiante5Potencia Enumerable
Select y RejectEncadenamiento de MapReduce / Injectcount, all?, any?, none?group_by y partitionsort_by, min_by, max_byRepaso: canalización de datos3Matrices 2D
Fundamentos de matrices 2DAcceso a elementos 2DRecorrido de matrices 2DPatrones comunes en 2DRepaso - Operaciones con matrices6Proyecto - Gestor de biblioteca
Descripción general del proyectoAñadir libro9Manejo de errores
¿Qué es una excepción?begin / rescueMúltiples cláusulas rescueensure y raiseRepaso: calculadora seguraPractica por tu cuenta: Compilador de Ruby online