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."
endExempelutdata:
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