Python Academy · Lektion

Förstå undantag

Lär dig vad undantag är och hur Python genererar dem.

Lektion 1 av 414 steg

Förstå undantag är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.

Introduktion

Undantag är Pythons mekanism för att signalera och hantera fel under körning.

Vad är ett undantag?

Ett undantag är en händelse som avbryter programmets normala flöde. Python utlöser undantag när fel inträffar — till exempel vid division med noll.
# 1 / 0  # raises ZeroDivisionError
print('exceptions demo')

Undantagshierarkin

Alla undantag ärver från BaseException. De flesta undantag som visas för användaren ärver från Exception. Specifika typer är ValueError, TypeError, KeyError med flera.
print(issubclass(ValueError, Exception))
print(issubclass(Exception, BaseException))

Vanliga inbyggda undantag

TypeError: fel typ. ValueError: rätt typ, fel värde. KeyError: ordboksnyckel saknas. IndexError: listindex utanför intervallet. AttributeError: attributet finns inte.
# Examples:
# int('abc')       -> ValueError
# d['missing']     -> KeyError
# [1,2][9]         -> IndexError
print('common exceptions')

Traceback

När ett undantag inte hanteras skriver Python ut en traceback: anropsstacken från botten (senaste anropet) till toppen. Lär dig att läsa den.
def f(): return 1/0
# f()  # shows traceback
print('traceback demo')

Undantagsobjektet

Varje undantag innehåller ett meddelande. str(e) eller e.args ger beskrivningen. Du kommer åt det i except så här: except ValueError as e.
try:
    int('abc')
except ValueError as e:
    print(type(e).__name__, e)

Fånga flera typer

except (TypeError, ValueError): fångar endera typen i en sats.
def parse(x):
    try:
        return int(x)
    except (TypeError, ValueError):
        return None
print(parse('abc'), parse(None))

ExceptionGroup (3.11+)

Python 3.11 introducerar ExceptionGroup för flera samtidiga undantag, som hanteras med syntaxen except*.
# Python 3.11+:
# try: ...
# except* ValueError as eg:
#     print(eg.exceptions)
print('exception group demo')

Varningar kontra undantag

import warnings; warnings.warn('msg') utfärdar en varning utan att utlösa ett undantag. Använd det för föråldrade funktioner och mjuka fel.
import warnings
warnings.warn('This is deprecated', DeprecationWarning)
print('warning issued')

sys.exc_info()

I ett except-block returnerar sys.exc_info() (type, value, traceback) — användbart för att logga fullständiga detaljer om undantag.
import sys
try:
    1/0
except:
    exc_type, exc_val, _ = sys.exc_info()
    print(exc_type, exc_val)

Kedja undantag

raise NewError('msg') from original_exc kedjar ihop undantag. Attributet __cause__ kopplar samman dem.
try:
    int('abc')
except ValueError as e:
    raise RuntimeError('parse failed') from e

Snabb kontroll

Vilket undantag utlöses när du försöker komma åt en ordbok med en nyckel som inte finns?

Sammanfattning

Undantag ärver från BaseException. Läs traceback nedifrån och upp. Fånga med except as e. Vanliga typer är ValueError, TypeError, KeyError, IndexError och AttributeError.

Fortsätt

Bra jobbat! Gå vidare till nästa lektion för att fortsätta utvecklas.
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”Förstå undantag” gratis?

Ja – hela texten till ”Förstå undantag” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Förstå undantag”?

Lär dig vad undantag är och hur Python genererar dem. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Förstå undantag”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Förstå undantag
  2. try / except / else / finally
  3. Generera och återgenerera undantag
  4. Egna undantagsklasser
← Tillbaka till Python Academy