Hvordan håndtere Unntak i Ruby

Av og til vil en metode oppstår en feil, og da det vil mislykkes og fortelle deg om det via en mekanisme som kalles et unntak. I Ruby når unntak er hevet av en metode som oppstår en feil, må du redde programmet og håndtere feilen.

Bruksanvisning

Kast en Unntaks

1 Skriv noen kode som vil kaste et unntak, med raise uttalelse. I Ruby vil raise uttalelse stoppe henrettelsen av metoden, og deretter slappe av programmet.

2 Legg ved kallet til denne metoden i matchende redning uttalelse. Ellers vil programmet avsluttes og en feilmelding vises på terminalen. Følgende eksempel viser en gjennomsnittsfunksjon, slik som finnes i karakterboken programvare.

3 Her er alle testresultatene i gjennomsnitt. Hvis resultatet er mer enn 100%, det er ikke noe annet valg enn å heve et unntak fordi noen har jukset:
def average(num1, num2, num3)
av = (num1 + num2 + num3) / 3.0
if av > 100
raise "Someone cheated, average is #{av}"
else
return av
end
end

Håndter Exception

4 Skriv unnsetning uttalelse, og kalte den gjennomsnittlige metoden omsluttet av en blokk med en rednings uttalelse.

5 Start blokk med "begynne." Det kan ha en rekke "redde" uttalelser, og det ender med "end" søkeord. Rednings uttalelsen har en type klausul også: en type etterfulgt av => og et variabelnavn. Eksklusiv type vil tillate rednings uttalelse for å fange alle unntak kastet.

6 Når du utfører rednings uttalelsen, er verdien som ble reist tildelt "e". Det kan være flere rednings uttalelser med flere typer å håndtere ulike typer feil:
begin
average(98, 92, 130)rescue => e
puts "I caught someone cheating!"
puts "The error message was this: #{e}"
end

Skriv Else og sikre Statements

7 Lag en sikre uttalelse, i tillegg til unnsetning uttalelse. Den sikre uttalelsen alltid blir utført når blokken er ferdig. Uansett hvordan blokken gått ut, om ikke det var et unntak heves, eller selv om den ikke klarte å redde unntak selv, er at uttalelsen alltid utført. Den andre setningen utføres bare hvis det var ingen unntak.

8 Her vil du sørge for karakterboken blir lukket, slik at du sikrer close_grade boken heter:
begin
average(98, 92, 130)rescue => e
puts "I caught someone cheating!"
puts "The error message was this: #{e}">ensure
close_gradebook
end

9 Skriv en ellers uttalelse. Hvis det var ingen unntak, vil ellers uttalelsen gratulere studenten for ikke juks:
else
puts "Good job, and you didn't even cheat!"

Hint

  • Blokken er et stykke kode som blir utført hver gang loopen kjøres.