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:

  1. Hvordan åpne, lese og skrive filer.

  2. Bruken av CSV og JSON for henholdsvis tabulær og strukturert data.

  3. Sikkerhet i filbehandling, inkludert riktig bruk av filtilgang og håndtering av data.


Dagens Agenda

  1. Hva er unntakshåndtering?

  2. Try, Except og Finally – Hvordan vi håndterer feil i Python.

  3. Definere egne unntak – Skreddersy din egen feilhåndtering.

  4. Vanlige feil og unntak – De mest vanlige unntakene og hvordan du løser dem.

  5. 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:

  1. Unntakshåndtering ved bruk av try, except, og finally.

  2. Hvordan definere og bruke egne unntak.

  3. Hvordan logge feil for å spore problemer i programmet.


Oppgaver

  1. 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.

  2. Bruk try-except for å håndtere et program som leser fra en fil, og gi en passende feilmelding hvis filen ikke finnes.

  3. 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!