Inzicht in de Uitzonderingshiërarchie
Veeg om het menu te tonen
Bij het werken met foutafhandeling in Python is het belangrijk om de structuur van de ingebouwde exceptieklassen te begrijpen. Alle exceptions erven van de basisklasse BaseException. De meeste excepties die je in dagelijkse code zult tegenkomen, zijn subklassen van Exception, die zelf een directe afgeleide is van BaseException. Dit ontwerp maakt het mogelijk om brede categorieën van fouten op te vangen of specifieke problemen te behandelen.
Veelgebruikte excepties zoals ValueError, TypeError, KeyError en IOError (ook bekend als OSError in moderne Python-versies) zijn allemaal subklassen van Exception. Er zijn ook meer gespecialiseerde excepties, zoals ZeroDivisionError en IndexError, die van deze algemene klassen erven. Sommige excepties, zoals KeyboardInterrupt en SystemExit, erven direct van BaseException – deze zijn meestal niet bedoeld om in normale programma's te worden opgevangen.
Inzicht in deze hiërarchie helpt bij het schrijven van nauwkeurige try/except-blokken, waarbij alleen wordt opgevangen wat bedoeld is en het maskeren van kritieke systeem-signalen wordt voorkomen.
1234567891011121314151617181920212223242526272829303132def raise_and_catch_exceptions(): # Catching a ValueError try: int("not a number") except ValueError as ve: print("Caught ValueError:", ve) # Catching a ZeroDivisionError (subclass of ArithmeticError) try: result = 10 / 0 except ZeroDivisionError as zde: print("Caught ZeroDivisionError:", zde) # Catching a TypeError try: result = "10" + 5 except TypeError as te: print("Caught TypeError:", te) # Catching an OSError (formerly IOError) try: open("file_that_does_not_exist.txt") except OSError as oe: print("Caught OSError:", oe) # Catching a general Exception (will catch most, but not all, exceptions) try: raise KeyError("missing key") except Exception as e: print("Caught Exception:", type(e).__name__, "-", e) raise_and_catch_exceptions()
1. Welke ingebouwde exception-klasse zou je gebruiken om fouten op te vangen bij het proberen een string naar een integer te converteren die niet geconverteerd kan worden?
2. Welke ingebouwde exception wordt opgegooid wanneer je probeert een dictionary-sleutel te benaderen die niet bestaat?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.