Python Academy · Lektion

try / except / else / finally

Strukturera block för undantagshantering i alla scenarier.

Lektion 2 av 414 steg

try / except / else / finally är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 2 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

Pythons try/except/else/finally ger dig full kontroll över felhantering och städning.

Grundläggande try/except

try: risky_code() except ExceptionType: handle() — Python kör except-blocket endast när den typen av undantag utlöses.
try:
    x = int('abc')
except ValueError:
    print('not a number')

Fånga undantagsobjektet

except ValueError as e: binder undantaget till e. Använd str(e) eller e.args för att hämta meddelandet.
try:
    int('oops')
except ValueError as e:
    print(f'Error: {e}')

Fånga flera undantag

except (TypeError, ValueError) as e: fångar endera typen.
for val in ['abc', None, 42]:
    try:
        print(int(val))
    except (TypeError, ValueError) as e:
        print(f'skipping {val!r}: {e}')

Tomt except (undvik det)

except: (utan typ) fångar ALLT, inklusive KeyboardInterrupt och SystemExit. Det är nästan alltid ett misstag — ange alltid typer.
try:
    risky = 1/0
except ZeroDivisionError:
    print('division error')  # specific

Flera except-satser

Du kan ha flera except-block där varje block hanterar en annan typ. Python provar dem i ordning.
def process(val):
    try:
        return 10 / int(val)
    except ValueError:
        print('not a number')
    except ZeroDivisionError:
        print('division by zero')
process('abc')
process('0')

else-sats

try/except/else: else körs endast om INGET undantag utlöstes. Använd den för kod som ska köras när allt lyckas.
try:
    x = int('42')
except ValueError:
    print('bad input')
else:
    print('parsed:', x)

finally-sats

finally körs ALLTID — efter att try lyckas, efter except och även efter return eller break. Den passar perfekt för städning.
def read_file(path):
    f = None
    try:
        f = open(path)
        return f.read()
    except FileNotFoundError:
        return None
    finally:
        if f: f.close()
print(read_file('/nonexistent'))

finally med return

Om både return och finally finns körs finally först, men returvärdet från finally vinner. Var försiktig.
def demo():
    try:
        return 'try'
    finally:
        return 'finally'  # overrides!
print(demo())

Kapslade try-block

try-block kan kapslas i varandra. Ett inre undantag fortplantas utåt om det inte fångas av det inre except-blocket.
try:
    try:
        x = 1/0
    except ValueError:
        print('inner')
except ZeroDivisionError:
    print('outer caught it')

Logga undantag

import logging; logging.exception('msg') loggar hela tracebacken. Det passar perfekt i produktionskod.
import logging
try:
    1/0
except ZeroDivisionError:
    logging.exception('Caught an error')

Snabb kontroll

Vilken sats körs oavsett om ett undantag inträffade eller inte?

Sammanfattning

try/except fångar fel. else körs när allt lyckas. finally körs alltid (städning). Fånga specifika typer och undvik tomt except. Använd as e för att komma åt undantaget.

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 ”try / except / else / finally” gratis?

Ja – hela texten till ”try / except / else / finally” 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 ”try / except / else / finally”?

Strukturera block för undantagshantering i alla scenarier. 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 2 av 4.

Hur lång tid tar lektionen ”try / except / else / finally”?

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