Exception Chaining en Opnieuw Opwerpen
Veeg om het menu te tonen
Bij het afhandelen van fouten in Python kun je situaties tegenkomen waarin het opvangen van de ene uitzondering ertoe leidt dat je een andere uitzondering moet opwerpen. In deze gevallen is het belangrijk om de context van de oorspronkelijke fout te behouden. Python's exception chaining maakt dit mogelijk met het sleutelwoord from. Door uitzonderingen expliciet te koppelen, geef je meer gedetailleerde tracebacks, waardoor het eenvoudiger wordt om de volgorde van fouten die tot een mislukking hebben geleid te begrijpen.
Stel dat je een functie schrijft die invoer uit een bestand verwerkt. Als er een fout optreedt tijdens het lezen van het bestand, wil je mogelijk een aangepaste uitzondering opwerpen die beter past bij de logica van je applicatie, maar je wilt ook informatie over de oorspronkelijke fout behouden. Met raise NewException() from original_exception kun je precies dat doen.
Het opnieuw opwerpen van uitzonderingen is een verwante techniek. Soms wil je na het opvangen van een uitzondering eerst wat opruimwerk of logging uitvoeren en daarna de uitzondering verder laten doorgeven. Dit doe je eenvoudig door alleen raise te gebruiken zonder een uitzondering te specificeren, waarmee de laatst opgevangen uitzondering opnieuw wordt opgegooid. Zowel exception chaining als het opnieuw opwerpen zijn waardevol voor het schrijven van robuuste, goed te debuggen code.
12345678910111213141516# Simple exception chaining and re-raising example def divide(a, b): try: return a / b except ZeroDivisionError as err: # Chain a new exception to the original raise ValueError("Cannot divide by zero") from err try: divide(5, 0) except ValueError as e: print("Caught ValueError:") import traceback traceback.print_exc() print("\nRe-raising the exception...\n") raise
Deze code demonstreert eenvoudige exception chaining en het opnieuw opwerpen van uitzonderingen in Python. De functie divide probeert twee getallen te delen en vangt een ZeroDivisionError op, die wordt gekoppeld aan een nieuwe ValueError met een duidelijke boodschap. Het buitenste try-except-blok vangt de ValueError op, print de volledige traceback die beide uitzonderingen toont, en werpt vervolgens de uitzondering opnieuw op om deze verder te laten propagëren.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.