Junior
Wat zijn de kenmerken van foutafhandeling in Python?
sobes.tech AI
Antwoord van AI
Excepties in Python zijn gebeurtenissen die de normale uitvoering van een programma onderbreken. Ze zijn objecten die fouten vertegenwoordigen.
Kenmerken:
- Hiërarchie van uitzonderingen: Alle ingebouwde uitzonderingen zijn klassen en georganiseerd in een hiërarchie gebaseerd op overerving van de basisklasse
BaseException.# Voorbeeld hiërarchie # BaseException -> Exception -> StandardError -> ... # Exception -> ArithmeticError -> ZeroDivisionError try...except...blokken: Het belangrijkste mechanisme voor het afhandelen van uitzonderingen.try: # Code die een uitzondering kan veroorzaken result = 10 / 0 except ZeroDivisionError: # Afhandeling van een specifieke uitzondering print("Delen door nul!") except Exception as e: # Afhandeling van andere uitzonderingen print(f"Er is een fout opgetreden: {e}")- Meerdere
exceptblokken: Hiermee kunnen verschillende typen uitzonderingen verschillend worden afgehandeld.try: # Code value = int("abc") except ValueError: print("Ongeldig getalformaat.") except TypeError: print("Ongeldig gegevenstype.") else-blok: Wordt uitgevoerd als hettry-blok zonder uitzonderingen eindigt.try: # Code result = 10 / 2 except ZeroDivisionError: print("Delen door nul!") else: print("Operatie succesvol uitgevoerd.")finally-blok: Wordt altijd uitgevoerd, ongeacht of er een uitzondering is opgetreden of niet. Wordt gebruikt om bronnen vrij te geven.file = None try: file = open("myfile.txt", "r") # Lezen uit het bestand except FileNotFoundError: print("Bestand niet gevonden.") finally: if file: file.close() # Garantiesluiting van het bestandraise-operator: Wordt gebruikt om expliciet een uitzondering te genereren.def divide(a, b): if b == 0: raise ZeroDivisionError("Delen door nul is niet toegestaan") return a / b try: divide(10, 0) except ZeroDivisionError as e: print(f"Fout: {e}")- Aangepaste uitzonderingen: Je kunt eigen uitzonderingsklassen maken door te erven van
Exceptionof een andere bestaande uitzonderingsklasse.class CustomError(Exception): pass def process_data(data): if not data: raise CustomError("Gegevens zijn leeg") try: process_data([]) except CustomError as e: print(f"Fout: {e}") - Afhandeling van uitzonderingen met de
with-contextmanager: Vereenvoudigt werken met bronnen die expliciet gesloten moeten worden (zoals bestanden).try: with open("myfile.txt", "r") as file: # Werken met het bestand content = file.read() except FileNotFoundError: print("Bestand niet gevonden.") # Het bestand wordt automatisch gesloten bij het verlaten van de `with`-blok - Ketens van uitzonderingen: Tijdens het afhandelen van een uitzondering kan informatie over de vorige uitzondering worden opgeslagen (impliciet of met
raise Exception from another_exception).
Deze kenmerken bieden een flexibel en krachtig mechanisme voor foutafhandeling in Python, waardoor het mogelijk is om robuustere en fouttolerantere programma's te maken.