typestar

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

  1. Heredar de StandardError nombra una falla con precisión.
  2. rescue atrapa por clase y liga el error con =>.
  3. ensure corre tanto en el éxito como en la falla.
  4. El modificador rescue convierte un raise en un respaldo en línea.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Archivos y errores; paso 26 de 29 en Fundamentos del lenguaje.

← Anterior Siguiente →