Ruby:
Hantering av fel

Hur:

Ruby använder begin, rescue, ensure och end för att hantera fel. Du omsluter den riskfyllda koden med begin och end. Om ett fel inträffar tar rescue vid.

begin
  # Riskfylld kod går här.
  puts 10 / 0
rescue ZeroDivisionError => e
  puts "Hoppsan! Det där kan du inte göra: #{e.message}"
ensure
  puts "Det här körs alltid, fel eller inte."
end

Exempelutdata:

Hoppsan! Det där kan du inte göra: dividerat med 0
Det här körs alltid, fel eller inte.

Fördjupning

Historiskt har felhantering i programmeringsspråk utvecklats avsevärt, där tidiga språk ofta hade grova eller obefintliga mekanismer. Rubys undantagshantering är inspirerad av språk som Python och Smalltalk.

Alternativ till begin-rescue i Ruby inkluderar att använda rescue i metoddefinitioner eller att använda throw och catch för icke-standardiserad flödeskontroll, även om de inte används för typisk felhantering.

En intressant detalj: Rubys undantag är objekt (instanser av klassen Exception och dess ättlingar), så du kan definiera anpassade felklasser och göra mer än att bara logga fel — du kan bära med dig rik status runt programmet för mer robust felhantering.

Se även

  • Ruby-dokumentationen om undantag och felhantering: ruby-doc.org
  • En detaljerad guide om bästa praxis för felhantering i Ruby: thoughtbot.com