Ruby:
Virheiden käsittely
Kuinka:
Ruby käyttää begin
, rescue
, ensure
ja end
avainsanoja virheenkäsittelyssä. Käärit riskaabelin koodin begin
ja end
rakenteen sisään. Jos virhe tapahtuu, rescue
aktivoituu.
begin
# Riskialtis koodi tulee tänne.
puts 10 / 0
rescue ZeroDivisionError => e
puts "Hups! Et voi tehdä tuota: #{e.message}"
ensure
puts "Tämä suoritetaan aina, olipa virhettä tai ei."
end
Esimerkkituloste:
Hups! Et voi tehdä tuota: jaettu nollalla
Tämä suoritetaan aina, olipa virhettä tai ei.
Syväsukellus
Historiallisesti ohjelmointikielten virheenkäsittely on kehittynyt merkittävästi, ja varhaisilla kielillä oli usein alkeellisia tai olemattomia mekanismeja. Rubyn poikkeuskäsittely on inspiroitunut kielistä kuten Python ja Smalltalk.
Vaihtoehtoja begin-rescue
-rakenteelle Rubyssa on käyttää rescue
-sanaa metodeissa tai käyttää throw
ja catch
komentoja ei-standardeissa ohjelmankulun hallinnassa, mutta niitä ei käytetä tyypilliseen virheenkäsittelyyn.
Yksi mielenkiintoinen yksityiskohta: Rubyn poikkeukset ovat olioita (Exception-luokan ja sen alaluokkien instansseja), joten voit määrittää omia virheluokkia ja tehdä enemmän kuin vain kirjata virheitä – voit kuljettaa rikasta tilaa ympäri ohjelmaa robustimpaan virheenkäsittelyyn.
Katso myös
- Rubyn dokumentaatio poikkeuksista ja virheenkäsittelystä: ruby-doc.org
- Yksityiskohtainen opas Rubyn virheenkäsittelyn parhaista käytänteistä: thoughtbot.com