Exceptions Genereren in Python: Fouten Activeren en Beheren
Exceptions in Python moeten worden opgegooid om aan te geven dat zich een foutconditie heeft voorgedaan, waardoor het voor een functie of methode onmogelijk wordt om de beoogde taak uit te voeren. Dit is vooral nuttig in situaties waarin het simpelweg retourneren van een None of een vergelijkbare waarde dubbelzinnig kan zijn en mogelijk niet voldoende aangeeft dat er een fout is opgetreden.
Een standaard-exceptie opwerpen
Om een exceptie in Python op te werpen, gebruikt u de raise-instructie. Hier is een eenvoudig voorbeeld:
123456789def calculate_age(birth_year): import datetime current_year = datetime.datetime.now().year age = current_year - birth_year if age < 0: raise ValueError("The birth year cannot be in the future") return age calculate_age(2034)
In dit voorbeeld wordt een ValueError opgegooid als de birth_year groter is dan het huidige jaar, wat aangeeft dat het opgegeven geboortejaar ongeldig is.
Aangepaste excepties maken
Hoewel de ingebouwde excepties van Python veel verschillende scenario's dekken, kan het soms nodig zijn om eigen excepties te definiëren om een foutconditie die specifiek is voor uw domein duidelijk uit te drukken.
Aangepaste excepties definiëren
Aangepaste excepties worden doorgaans afgeleid van de ingebouwde Exception-klasse of een van de subklassen daarvan. Hier ziet u hoe u een aangepaste exceptie kunt definiëren:
1234567891011class RegistrationError(Exception): """Base class for all registration-related exceptions.""" pass class UsernameTooShort(RegistrationError): """Raised when the username is too short.""" pass class PasswordTooWeak(RegistrationError): """Raised when the password is too weak.""" pass
Opmerking
Hopelijk herinner je je het overervingsconcept uit OOP 😉
Hier volgt een praktisch voorbeeld van het gebruik van aangepaste uitzonderingen. Maak je geen zorgen over de else en as sleutelwoorden in het voorbeeld; deze worden in het volgende hoofdstuk behandeld.
123456789101112131415161718192021222324252627282930# Custom exceptions class RegistrationError(Exception): pass class UsernameTooShort(RegistrationError): pass class PasswordTooWeak(RegistrationError): pass # Functions to validate registration def validate_username(username): if len(username) < 6: raise UsernameTooShort("Username must be at least 6 characters long") def validate_password(password): if len(password) < 8: raise PasswordTooWeak("Password must be at least 8 characters long") def register_user(username, password): try: validate_username(username) validate_password(password) except RegistrationError as error: print(f"Registration failed: {error}") else: print("User registered successfully!") # Test the registration function register_user("john", "123") # This should fail
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Can you explain the difference between built-in and custom exceptions in Python?
How do I decide when to create a custom exception?
Can you show more examples of using custom exceptions in real-world scenarios?
Awesome!
Completion rate improved to 3.13
Exceptions Genereren in Python: Fouten Activeren en Beheren
Veeg om het menu te tonen
Exceptions in Python moeten worden opgegooid om aan te geven dat zich een foutconditie heeft voorgedaan, waardoor het voor een functie of methode onmogelijk wordt om de beoogde taak uit te voeren. Dit is vooral nuttig in situaties waarin het simpelweg retourneren van een None of een vergelijkbare waarde dubbelzinnig kan zijn en mogelijk niet voldoende aangeeft dat er een fout is opgetreden.
Een standaard-exceptie opwerpen
Om een exceptie in Python op te werpen, gebruikt u de raise-instructie. Hier is een eenvoudig voorbeeld:
123456789def calculate_age(birth_year): import datetime current_year = datetime.datetime.now().year age = current_year - birth_year if age < 0: raise ValueError("The birth year cannot be in the future") return age calculate_age(2034)
In dit voorbeeld wordt een ValueError opgegooid als de birth_year groter is dan het huidige jaar, wat aangeeft dat het opgegeven geboortejaar ongeldig is.
Aangepaste excepties maken
Hoewel de ingebouwde excepties van Python veel verschillende scenario's dekken, kan het soms nodig zijn om eigen excepties te definiëren om een foutconditie die specifiek is voor uw domein duidelijk uit te drukken.
Aangepaste excepties definiëren
Aangepaste excepties worden doorgaans afgeleid van de ingebouwde Exception-klasse of een van de subklassen daarvan. Hier ziet u hoe u een aangepaste exceptie kunt definiëren:
1234567891011class RegistrationError(Exception): """Base class for all registration-related exceptions.""" pass class UsernameTooShort(RegistrationError): """Raised when the username is too short.""" pass class PasswordTooWeak(RegistrationError): """Raised when the password is too weak.""" pass
Opmerking
Hopelijk herinner je je het overervingsconcept uit OOP 😉
Hier volgt een praktisch voorbeeld van het gebruik van aangepaste uitzonderingen. Maak je geen zorgen over de else en as sleutelwoorden in het voorbeeld; deze worden in het volgende hoofdstuk behandeld.
123456789101112131415161718192021222324252627282930# Custom exceptions class RegistrationError(Exception): pass class UsernameTooShort(RegistrationError): pass class PasswordTooWeak(RegistrationError): pass # Functions to validate registration def validate_username(username): if len(username) < 6: raise UsernameTooShort("Username must be at least 6 characters long") def validate_password(password): if len(password) < 8: raise PasswordTooWeak("Password must be at least 8 characters long") def register_user(username, password): try: validate_username(username) validate_password(password) except RegistrationError as error: print(f"Registration failed: {error}") else: print("User registered successfully!") # Test the registration function register_user("john", "123") # This should fail
Bedankt voor je feedback!