Python voor beginners - De try except-strategie: Maak foutafhandeling en debugging eenvoudig!

Tux stopt bij Exception licht

Als je net begint met Python, kan je overrompeld worden door de try except syntaxis. "Welke class naam moet ik onthouden?", "Wanneer moet ik dit gebruiken?" Dit zijn allemaal vragen die kunnen opkomen. In dit artikel leggen we de kernconcepten van Python foutafhandeling uit en de try except-strategie voor beginners.


Waarom is Python foutafhandeling belangrijk?

Wanneer je code uitvoert, werkt deze niet altijd zoals verwacht. Gebruikers kunnen verkeerde invoer geven, bestanden kunnen ontbreken, netwerken kunnen verloren gaan... Als het programma dan stopt, wordt de gebruikerservaring ernstig aangetast.

Op dat moment heb je de foutafhandeling van Python (try except) nodig.

Het doel van foutafhandeling is simpel: de software veilig blijven laten draaien, zelfs wanneer er fouten optreden.


Hoe ziet try except eruit?

try:
    # code waar problemen kunnen ontstaan
except exception_class as e:
    # wat te doen als er een probleem is

Bijvoorbeeld:

try:
    result = 10 / 0
except ZeroDivisionError as e:
    print("Verdeling door nul is niet mogelijk:", e)

Hier is de kern de ZeroDivisionError exception class. Deze class geeft de 'naam' aan het soort fout dat optrad.


Wat is een exception class en moet ik het onthouden?

Veel Python-beginners stellen deze vraag:

"Moet ik al deze exception classes onthouden?"

Het antwoord is nee!

Zelfs ervaren ontwikkelaars onthouden niet alle exception classes. In plaats daarvan worden enkele veelgebruikte exception classes onthouden, terwijl de rest bij een probleem terugkomt naar de foutmelding.

Bijvoorbeeld:

FileNotFoundError: [Errno 2] Dit bestand of deze map bestaat niet: 'none.txt'

Dan schrijf je:

except FileNotFoundError:

Zo doen we dat.


Top 7 meest gebruikte Python exception classes

Exception class Wanneer ontstaat deze?
ValueError Bij een ongeldige waarde
TypeError Bij een type mismatch
IndexError Bij overschrijding van de lijstindex
KeyError Bij een niet-bestaande sleutel in de dictionary
ZeroDivisionError Bij deling door nul
FileNotFoundError Bij een ontbrekend bestand
Exception Ouder van alle gewone fouten

Als je dit hebt geleerd, kun je de meeste situaties voor Python foutafhandeling aan.


Probeer de try except-strategie voor beginners!

  1. Als je het niet weet, gebruik dan eerst Exception.
try:
    dangerous_code()
except Exception as e:
    print("Er is een probleem opgetreden:", e)
  1. Kijk naar de foutmelding en specificeer de benodigde exception class.

  2. Vertrouw op de auto-aanvulling van je IDE (code-editor). De meeste bieden aanbevelingen.

  3. Bij herhaalde problemen leer je automatisch.


Foutafhandeling is een vriend van debugging

Python foutafhandeling is niet alleen een hulpmiddel om fouten te voorkomen, maar ook een krachtig hulpmiddel voor het traceren van fouten en het vinden van de oorzaken.

Foutmeldingen komen meestal op de volgende manier naar voren:

Traceback (most recent call last):
  File "main.py", line 2, in <module>
    x = 10 / 0
ZeroDivisionError: deling door nul

Hierdoor kun je het bestandsnaam, regelnummer en fouttype precies weten. Daarom wordt debugging gemakkelijker als je foutafhandeling goed gebruikt.


Extra exception class - StopIteration

StopIteration is de fout die optreedt wanneer een iterabel object (iterator) geen items meer te retourneren heeft. In een gewone for loop wordt dit automatisch afgehandeld, dus daar hoef je je geen zorgen over te maken, maar bij het gebruik van de next() functie moet je het vaak zelf behandelen.

Bijvoorbeeld:

it = iter([1, 2])
print(next(it))  # 1
print(next(it))  # 2
print(next(it))  # StopIteration optreedt

Of in de volgende code:

try:
    category = next(cat for cat in all_categories if cat.slug == category_slug)
except StopIteration:
    pass  # Doet niets

Hier wordt het gebruikt om als er geen category met die slug is, niets te doen en gewoon door te gaan. Dit kan gezien worden als een minimale verdediging om de code-executie niet te stoppen.


Conclusie - Python foutafhandeling, moeilijk in het begin maar leert snel

Je hoeft niet alle exception classes vanaf het begin uit je hoofd te leren of perfecte foutafhandeling te hebben. In plaats daarvan, word bewust van probleem situaties, omhul ze met try except en ontwikkel de gewoonte om foutmeldingen te analyseren.

Python foutafhandeling maakt je programma robuuster en vergemakkelijkt later het vinden van problemen. Voor beginners is overlevingskracht in de praktijk belangrijker dan perfectie. try except is de eerste stap daartoe.


In de volgende aflevering leg ik uit over de uitgebreide structuur van try except else finally foutafhandelingsstromen! 😊