ExpertiDict

Ruby · Intermediário · Inglês · Técnico

catch throw

/kætʃ θɹoʊ/método

Par de métodos do Kernel para sair de vários laços aninhados de uma vez: throw com uma etiqueta interrompe tudo até o catch correspondente. Não tem relação com exceções.

Onde usar

Aparece ao sair de laços duplos ou triplos sem variáveis auxiliares de controle. É raro e deve ser usado com moderação.

Em código

r = catch(:achou) do
  (1..3).each do |i|
    (1..3).each do |j|
      throw :achou, [i, j] if i * j == 6
    end
  end
end
p r  # => [2, 3]

Exemplos

Throw out of both loops as soon as you find it.

Dê throw para fora dos dois laços assim que achar.

Catch and throw are not the same as rescue.

Catch e throw não são o mesmo que rescue.

Cuidado

Não o confunda com try e catch de Java ou JavaScript: em Ruby o tratamento de erros usa rescue, e catch e throw só controlam o fluxo.

Veja também

Todos os termos de Ruby