Gå til innhold

1. Try og Except

Når vi skal kjøre en kode som ikke garantert virker 100% av gangene, eller kan ha ulike utfall, bør vi plassere den i en try og except blokk. Det kan være mange grunner til dette, og mange applikasjoner hvor dette bør gjøres.

Vanligvis når Python møter en Exception, vil programmet avslutte, men dette kan unngås med riktig feilhåndteringsstrategi.

Et eksempel kan være en applikasjon som bruker internett til å innhente data. Hva skal vi gjøre når nettet går? Hva skal vi gjøre når serveren vi prøver å snakke til krasjer? Hva skjer hvis dataen er korrupt? Dette er dessverre utviklerens ansvar å håndtere.

Under finner du 2 snippets for kode, en med og en uten feilhåndtering. Denne skal vi bygge på i denne modulen.

1
2
3
4
5
import requests

r = requests.get('https://uselessfacts.jsph.pl/api/v2/facts/random')
print(r.json()['text'])
# Kan vi garantere at denne virker?
import requests

def do_request(url):
    try:
        return requests.get(url)
    except Exception:
        return do_request(url)  # Prøv på ny

r = do_request('https://uselessfacts.jsph.pl/api/v2/facts/random')
print(r.json()['text'])
# Her tvinger vi oss frem!

Man kan også få informasjon om hva som gikk galt ved å bruke except Exception as <variabel>

1
2
3
4
5
6
def do_request(url):
    try:
        return requests.get(url)
    except Exception as e:
        print(e)
        return do_request(url)  # Prøv på ny

OBS, dårlig praksis!!

Eksempelet ovenfor er kun et eksempel på håndtering av ALLE typer feil, Exception inkluderer alle kodeforstyrrelser, inkludert “Avslutt” knappen. Programmet kan derfor gå helt i lås.


1 år siden 1 år siden GitHub Sondre Grønås