Python Academy · Lektion

Forstå undtagelser

Lær, hvad undtagelser er, og hvordan Python rejser dem.

Lektion 1 af 414 trin

Forstå undtagelser er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.

Introduktion

Undtagelser er Pythons mekanisme til at signalere og håndtere fejl under kørsel.

Hvad er en undtagelse?

En undtagelse er en hændelse, der afbryder den normale programafvikling. Python rejser undtagelser, når der opstår fejl — f.eks. ved division med nul.
# 1 / 0  # raises ZeroDivisionError
print('exceptions demo')

Undtagelseshierarki

Alle undtagelser nedarver fra BaseException. De fleste brugervendte undtagelser nedarver fra Exception. Specifikke typer: ValueError, TypeError, KeyError osv.
print(issubclass(ValueError, Exception))
print(issubclass(Exception, BaseException))

Almindelige indbyggede undtagelser

TypeError: forkert type. ValueError: korrekt type, forkert værdi. KeyError: ordbogsnøgle mangler. IndexError: listeindeks uden for intervallet. AttributeError: attributten findes ikke.
# Examples:
# int('abc')       -> ValueError
# d['missing']     -> KeyError
# [1,2][9]         -> IndexError
print('common exceptions')

Tracebacken

Når en undtagelse ikke håndteres, udskriver Python en traceback: kaldestakken fra bunden, det seneste kald, til toppen. Lær at læse den.
def f(): return 1/0
# f()  # shows traceback
print('traceback demo')

Undtagelsesobjektet

Hver undtagelse indeholder en meddelelse. str(e) eller e.args giver beskrivelsen. Tilgå den i except som: except ValueError as e.
try:
    int('abc')
except ValueError as e:
    print(type(e).__name__, e)

Fangning af flere typer

except (TypeError, ValueError): fanger begge typer med én klausul.
def parse(x):
    try:
        return int(x)
    except (TypeError, ValueError):
        return None
print(parse('abc'), parse(None))

Undtagelsesgruppen (3.11+)

Python 3.11 tilføjer ExceptionGroup til flere samtidige undtagelser, som håndteres med syntaksen except*.
# Python 3.11+:
# try: ...
# except* ValueError as eg:
#     print(eg.exceptions)
print('exception group demo')

Advarsler kontra undtagelser

import warnings; warnings.warn('msg') udsender en advarsel uden at rejse en undtagelse. Brug det til udfasninger og mindre alvorlige fejl.
import warnings
warnings.warn('This is deprecated', DeprecationWarning)
print('warning issued')

sys.exc_info()

I en except-blok returnerer sys.exc_info() (type, value, traceback) — nyttigt til logning af alle detaljer om undtagelsen.
import sys
try:
    1/0
except:
    exc_type, exc_val, _ = sys.exc_info()
    print(exc_type, exc_val)

Kædning af undtagelser

raise NewError('msg') from original_exc kæder undtagelser. Attributten __cause__ forbinder dem.
try:
    int('abc')
except ValueError as e:
    raise RuntimeError('parse failed') from e

Hurtigt tjek

Hvilken undtagelse rejses, når du tilgår en ordbog med en nøgle, der ikke findes?

Opsamling

Undtagelser nedarver fra BaseException. Læs tracebacks nedefra og op. Fang dem med except as e. Almindelige typer: ValueError, TypeError, KeyError, IndexError og AttributeError.

Fortsæt

Godt arbejde! Gå videre til den næste lektion for at fortsætte din fremgang.
Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
76
Lektioner
320

Ofte stillede spørgsmål

Er lektionen “Forstå undtagelser” gratis?

Ja — hele teksten til “Forstå undtagelser” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Forstå undtagelser”?

Lær, hvad undtagelser er, og hvordan Python rejser dem. Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Python Academy?

Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Forstå undtagelser”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Python Academy-lektion?

Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Forstå undtagelser
  2. try / except / else / finally
  3. Rejsning og genrejsning af undtagelser
  4. Brugerdefinerede undtagelsesklasser
← Tilbage til Python Academy