Ruby:
Feilhåndtering
Hvordan gjøre det:
Ruby bruker begin
, rescue
, ensure
og end
for å håndtere feil. Du omslutter risikofylt kode med begin
og end
. Hvis en feil oppstår, trer rescue
i kraft.
begin
# Risikofylt kode kommer her.
puts 10 / 0
rescue ZeroDivisionError => e
puts "Oops! Du kan ikke gjøre det: #{e.message}"
ensure
puts "Dette kjører alltid, uansett feil eller ikke."
end
Eksempel på utskrift:
Oops! Du kan ikke gjøre det: delt på 0
Dette kjører alltid, uansett feil eller ikke.
Dypdykk
Historisk har feilhåndtering i programmeringsspråk utviklet seg betydelig, med tidlige språk som ofte hadde primitive eller ikke-eksisterende mekanismer. Rubys unntakshåndtering er inspirert av språk som Python og Smalltalk.
Alternativer til begin-rescue
i Ruby inkluderer bruk av rescue
i metodedefinisjoner eller å bruke throw
og catch
for ikke-standard flytkontroll, selv om de ikke brukes for typisk feilhåndtering.
En interessant detalj: Unntak i Ruby er objekter (instanser av Exception
-klassen og dens etterkommere), så du kan definere egendefinerte feilklasser og gjøre mer enn bare å logge feil – du kan bære med deg rik tilstand rundt programmet for mer robust feilhåndtering.
Se også
- Ruby-dokumentasjonen om unntak og feilhåndtering: ruby-doc.org
- En detaljert veiledning om beste praksiser for feilhåndtering i Ruby: thoughtbot.com