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