Skip to content

Instantly share code, notes, and snippets.

@norbajunior
Created February 17, 2011 03:12
Show Gist options
  • Save norbajunior/830883 to your computer and use it in GitHub Desktop.
Save norbajunior/830883 to your computer and use it in GitHub Desktop.
def explode # Este método levanta um RuntimeError 10% das vezes
raise "bam!" if rand(10) == 0
end
def risky
begin # Este bloco
10.times do # contém outro bloco
explode # que pode levantar uma exceção.
end # Nenhuma cláusula rescue está aqui, então propague para fora.
rescue TypeError # Esta cláusula rescue não pode manipular um RunTimeError...
puts $! # então pule e propague para fora.
end
"hello" # Este é o valor retornado normal, se nenhuma exceção ocorrer.
end # Nenhuma cláusula rescue aqui, então propague até o caller.
def defuse
begin # O código seguinte pode cair com a exceção
puts risky # Tente invocar imprimir o valor retornado.
rescue RuntimeError => e # Se pegarmos uma exceção
puts e.message # imprima, ao invés disso, a mensagem error.
end
end
defuse
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment