Ruby:
Tratamento de erros

Como fazer:

Ruby utiliza begin, rescue, ensure e end para tratar erros. Você envolve o código arriscado em begin e end. Se um erro ocorrer, rescue entra em ação.

begin
  # Código arriscado vai aqui.
  puts 10 / 0
rescue ZeroDivisionError => e
  puts "Ops! Você não pode fazer isso: #{e.message}"
ensure
  puts "Isso sempre executa, com erro ou não."
end

Saída de Exemplo:

Ops! Você não pode fazer isso: dividido por 0
Isso sempre executa, com erro ou não.

Aprofundando

Historicamente, o tratamento de erros em linguagens de programação evoluiu significativamente, com as linguagens mais antigas muitas vezes tendo mecanismos rudimentares ou inexistentes. O tratamento de exceções do Ruby é inspirado em linguagens como Python e Smalltalk.

Alternativas ao begin-rescue no Ruby incluem o uso de rescue em definições de métodos ou a utilização de throw e catch para controle de fluxo não padrão, embora eles não sejam usados para tratamento de erros típico.

Um detalhe interessante: as exceções em Ruby são objetos (instâncias da classe Exception e suas descendentes), então você pode definir classes de erro personalizadas e fazer mais do que apenas registrar erros — você pode transportar um estado rico pelo programa para um tratamento de erros mais robusto.

Veja Também

  • A documentação do Ruby sobre exceções e tratamento de erros: ruby-doc.org
  • Um guia detalhado sobre as melhores práticas de tratamento de erros em Ruby: thoughtbot.com