Excepciones en Ruby
raise, rescue, ensure y una clase de error propia.
class EmptyCartError < StandardError; end
def checkout(items)
raise EmptyCartError, "nothing to buy" if items.empty?
items.sum
end
begin
puts checkout([5, 8])
puts checkout([])
rescue EmptyCartError => e
puts "refused: #{e.message}"
ensure
puts "till closed"
end
# rescue como modificador convierte un raise en un fallback en línea
puts (Integer("nope") rescue "not a number")
Cómo funciona
- Heredar de
StandardErrornombra una falla con precisión. rescueatrapa por clase y liga el error con=>.ensurecorre tanto en el éxito como en la falla.- El modificador
rescueconvierte un raise en un respaldo en línea.
Palabras clave y builtins usados aquí
Integerbeginclassdefendensureifputsraiserescue
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 379
- Tokens
- 75
- Ritmo de tres estrellas
- 85 tpm
Al ritmo de tres estrellas de 85 tokens por minuto, este intento toma unos 53 segundos.
Paso 2 de 3 en Archivos y errores; paso 26 de 29 en Fundamentos del lenguaje.