Python:
Feilhåndtering

Hvordan gjøre:

# Grunnleggende try-except-blokk
try:
    # risikofylt kode
    tall = int(input("Skriv inn et tall: "))
except ValueError:
    # håndtere feil
    print("Det er ikke et tall!")

# Spesifisere flere unntak
try:
    # kode som kan utløse forskjellige unntak
    resultat = 10 / int(input("Skriv inn en divisor: "))
except ZeroDivisionError:
    print("Oops! Kan ikke dele på null.")
except ValueError:
    print("Jeg trenger et tall, kompis.")

# Bruke else og finally
try:
    tall = int(input("Skriv inn et tall for kvadrering: "))
except ValueError:
    print("Jeg sa et tall!")
else:
    # ingen feil oppstått
    print("Ditt tall kvadrert er:", tall**2)
finally:
    # utfører alltid
    print("Takk for at du prøvde dette ut!")

Eksempel på utdata når du skriver inn et ugyldig tall for den første blokken:

Skriv inn et tall: hallo
Det er ikke et tall!

Dypdykk

Siden programmeringens begynnelse har feilhåndtering vært avgjørende. Tidlige tilnærminger var rudimentære, som å sjekke forhold før hver risikofylt operasjon. Pythons try-except-syntaks kommer fra en arv av unntakshåndtering i eldre språk som C++ og Java, noe som forenkler prosessen.

Når du try (forsøker) en blokk med kode, ser Python etter eventuelle unntak. Hvis en feil dukker opp, fanger except-blokken den. Du kan bli spesifikk om unntakene du fanger, eller fange alle med et enkelt except. Men, det er bedre å være spesifikk først – det er presist, ikke et fangstnett for alt.

else og finally er ekstra i dette konseptet. else-blokken kjører hvis try-blokken er feilfri. finally er den pålitelige kameraten som kjører uansett hva som skjer – tenk oppryddingsoperasjoner.

Alternativer? De finnes helt sikkert. Noen språk bruker returkoder i stedet for unntak. Du kan også møte på with-setninger for håndtering av ressurser, eller assertions som sjekker forhold under utvikling. Men når vi snakker om solide feilhåndteringsstrategier, skiller try-catch-modellen seg ut for sin lesbarhet og struktur.

Se også

Her er noen gode ekstra ressurser for å dykke enda dypere: