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