PythonPodcast 12 - itnett/FTD02H-N GitHub Wiki
Episode 12 – Unntakshåndtering og Feilsikring i Python
Velkommen til Episode 12!
I denne episoden skal vi lære om unntakshåndtering (eller feilhåndtering) i Python. Dette er en viktig del av det å skrive robust og feilfri kode, da det hjelper oss å håndtere uventede situasjoner som kan oppstå under kjøringen av et program.
Oppsummering fra forrige episode
I Episode 11 lærte vi om filbehandling i Python, inkludert:
-
Hvordan åpne, lese og skrive filer.
-
Bruken av CSV og JSON for henholdsvis tabulær og strukturert data.
-
Sikkerhet i filbehandling, inkludert riktig bruk av filtilgang og håndtering av data.
Dagens Agenda
-
Hva er unntakshåndtering?
-
Try, Except og Finally – Hvordan vi håndterer feil i Python.
-
Definere egne unntak – Skreddersy din egen feilhåndtering.
-
Vanlige feil og unntak – De mest vanlige unntakene og hvordan du løser dem.
-
Sikring og logging – Hvordan fange og logge feil for videre analyse.
Hva er unntakshåndtering?
Unntakshåndtering handler om å fange opp feil som oppstår når programmet kjører, uten at programmet krasjer. Når det oppstår en feil, kaller vi det et unntak. Python har et innebygd system for å håndtere unntak slik at vi kan reagere på feil og enten rette dem eller gi brukeren en meningsfull feilmelding.
Try, Except og Finally
Den grunnleggende syntaksen for unntakshåndtering i Python bruker try, except, og eventuelt finally.
try: # Kode som kan forårsake et unntak tall = int(input("Skriv inn et tall: ")) print(f"Ditt tall: {tall}") except ValueError: # Dette utføres hvis det oppstår en ValueError (f.eks. hvis input ikke er et tall) print("Det var ikke et gyldig tall.") finally: # Denne koden kjører alltid, uansett om det er en feil eller ikke print("Programmet er ferdig.")
try: Her plasserer vi koden vi forventer kan føre til feil.
except: Her definerer vi hva som skal gjøres hvis det oppstår en bestemt type feil (unntak).
finally: Denne blokken utføres alltid, uavhengig av om det har vært en feil eller ikke. Den brukes ofte for opprydding, som å lukke filer eller nettverksforbindelser.
Flere unntakstyper
Du kan håndtere flere typer unntak ved å bruke flere except-blokker. La oss se på noen vanlige unntak:
try: a = int(input("Skriv inn et tall: ")) b = int(input("Skriv inn et annet tall: ")) resultat = a / b except ValueError: print("Du må skrive inn tall, ikke tekst.") except ZeroDivisionError: print("Du kan ikke dele på null!") except Exception as e: # Fanger opp andre typer feil print(f"En annen feil oppstod: {e}") finally: print("Programmet er ferdig.")
I dette eksempelet:
ValueError håndteres hvis brukeren skriver inn noe annet enn et tall.
ZeroDivisionError håndteres hvis brukeren prøver å dele et tall med null.
Exception fanger opp alle andre typer feil som vi ikke har håndtert eksplisitt.
Egendefinerte Unntak
Noen ganger kan det være nyttig å definere dine egne unntak. Dette kan gjøres ved å lage en klasse som arver fra Exception-klassen:
class MinEgenFeil(Exception): pass
def sjekk_tall(tall): if tall < 0: raise MinEgenFeil("Tallet kan ikke være negativt!")
try: sjekk_tall(-1) except MinEgenFeil as e: print(f"Feil: {e}")
Her har vi definert vårt eget unntak MinEgenFeil og brukt raise for å utløse unntaket.
Logging av feil
Når du skriver større programmer, kan det være nyttig å logge feilene for videre analyse. Python har et innebygd bibliotek for logging som vi kan bruke:
import logging
logging.basicConfig(filename='feil.log', level=logging.ERROR)
try: a = 10 / 0 except ZeroDivisionError as e: logging.error(f"ZeroDivisionError: {e}")
Dette skriver feilene til en loggfil som vi kan se gjennom senere.
Oppsummering
I dag har vi lært om:
-
Unntakshåndtering ved bruk av try, except, og finally.
-
Hvordan definere og bruke egne unntak.
-
Hvordan logge feil for å spore problemer i programmet.
Oppgaver
-
Lag et program som spør brukeren om et tall og gir en feilmelding hvis det ikke er et tall eller hvis tallet er negativt.
-
Bruk try-except for å håndtere et program som leser fra en fil, og gi en passende feilmelding hvis filen ikke finnes.
-
Skriv en funksjon som genererer et egendefinert unntak hvis en liste inneholder duplikate verdier.
Neste episode
I neste episode skal vi utforske GUI-programmering i Python ved å bruke biblioteket Tkinter. Vi skal lage vårt eget brukergrensesnitt for en enkel applikasjon.
🎧 Abonner på podcasten for å holde deg oppdatert på alle de nyeste Python-konseptene! 🎙️
Takk for at du lyttet, og vi sees i neste episode!