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