Sollevare Eccezioni in Python: Attivazione e Gestione degli Errori
Le eccezioni in Python dovrebbero essere sollevate per segnalare che si è verificata una condizione di errore, rendendo impossibile a una funzione o a un metodo svolgere il proprio compito previsto. Questo è particolarmente utile in situazioni in cui restituire semplicemente un valore come None o simile potrebbe essere ambiguo e potrebbe non comunicare adeguatamente che si è verificato un errore.
Sollevare un'Eccezione Standard
Per sollevare un'eccezione in Python, si utilizza l'istruzione raise. Ecco un semplice esempio:
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 questo esempio, viene sollevata una ValueError se il birth_year è maggiore dell'anno corrente, indicando che l'anno di nascita fornito non è valido.
Creazione di Eccezioni Personalizzate
Sebbene le eccezioni predefinite di Python coprano molti scenari diversi, a volte può essere necessario definire eccezioni personalizzate per esprimere chiaramente una condizione di errore specifica del proprio dominio.
Definizione di Eccezioni Personalizzate
Le eccezioni personalizzate sono tipicamente derivate dalla classe incorporata Exception o da una delle sue sottoclassi. Ecco come è possibile definire un'eccezione personalizzata:
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
Nota
Si spera che tu ricordi il concetto di ereditarietà dalla programmazione orientata agli oggetti 😉
Ecco un esempio pratico di come vengono utilizzate le eccezioni personalizzate. Non preoccuparti delle parole chiave else e as nell'esempio; le approfondiremo nel prossimo capitolo.
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
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Fantastico!
Completion tasso migliorato a 3.13
Sollevare Eccezioni in Python: Attivazione e Gestione degli Errori
Scorri per mostrare il menu
Le eccezioni in Python dovrebbero essere sollevate per segnalare che si è verificata una condizione di errore, rendendo impossibile a una funzione o a un metodo svolgere il proprio compito previsto. Questo è particolarmente utile in situazioni in cui restituire semplicemente un valore come None o simile potrebbe essere ambiguo e potrebbe non comunicare adeguatamente che si è verificato un errore.
Sollevare un'Eccezione Standard
Per sollevare un'eccezione in Python, si utilizza l'istruzione raise. Ecco un semplice esempio:
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 questo esempio, viene sollevata una ValueError se il birth_year è maggiore dell'anno corrente, indicando che l'anno di nascita fornito non è valido.
Creazione di Eccezioni Personalizzate
Sebbene le eccezioni predefinite di Python coprano molti scenari diversi, a volte può essere necessario definire eccezioni personalizzate per esprimere chiaramente una condizione di errore specifica del proprio dominio.
Definizione di Eccezioni Personalizzate
Le eccezioni personalizzate sono tipicamente derivate dalla classe incorporata Exception o da una delle sue sottoclassi. Ecco come è possibile definire un'eccezione personalizzata:
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
Nota
Si spera che tu ricordi il concetto di ereditarietà dalla programmazione orientata agli oggetti 😉
Ecco un esempio pratico di come vengono utilizzate le eccezioni personalizzate. Non preoccuparti delle parole chiave else e as nell'esempio; le approfondiremo nel prossimo capitolo.
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
Grazie per i tuoi commenti!