English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Corso di base Python

Controllo di flusso Python

Funzione in Python

Tipi di dati in Python

Operazioni di file Python

Oggetti e classi Python

Data e ora Python

Conoscenze avanzate Python

Manuale di riferimento Python

Eccezione personalizzata in Python

Python ha molteEccezioni built-in, che costringono il tuo programma a stampare un errore quando si verificano alcuni errori.

Ma a volte potresti aver bisogno di creare un gestore di eccezioni personalizzato che soddisfi i tuoi scopi.

In Python, l'utente può definire questo tipo di eccezione creando una nuova classe. La classe di eccezione deve derivare direttamente o indirettamente dalla classe Exception. La maggior parte delle eccezioni built-in deriva anche da questa classe.

>>> class CustomError(Exception):
... pass
...
>>> raise CustomError
Traceback (chiamata più recente in basso):
...
__main__.CustomError
>>> raise CustomError("An error occurred")
Traceback (chiamata più recente in basso):
...
__main__.CustomError: An error occurred

In questo caso, abbiamo creato un'eccezione definita dall'utente chiamata CustomError, che deriva dalla classe Exception. Come altre eccezioni, è possibile sollevare questa nuova eccezione utilizzando una语句 raise con un messaggio di errore opzionale.

Quando sviluppiamo programmi Python di grandi dimensioni, è meglio mettere tutte le eccezioni definite dall'utente in un file separato. Molti moduli standard possono fare questo. Definiscono le eccezioni come exceptions.py o errors.py.

Le classi di eccezioni definite dall'utente possono eseguire tutte le operazioni che possono eseguire le classi normali, ma di solito le rendiamo semplici e chiare. La maggior parte delle implementazioni dichiara una classe base personalizzata e deriva altre classi di eccezioni da essa. Nei seguenti esempi, chiariremo meglio questo concetto.

Esempio: eccezioni definite dall'utente in Python

In questo esempio, spieghiamo come utilizzare le eccezioni definite dall'utente per sollevare e catturare errori nel programma.

Questo programma richiede all'utente di inserire un numero fino a quando non indovina correttamente il numero memorizzato. Per aiutarli a chiarire, viene indicato se la loro stima è maggiore o minore del numero memorizzato.

# Definire le eccezioni definite dall'utente in Python
class Error(Exception):
   """Classe base per altre eccezioni"""
   pass
class ValueTooSmallError(Error):
   """Lanciata quando il valore di input è troppo piccolo"""
   pass
class ValueTooLargeError(Error):
   """Lanciata quando il valore di input è troppo grande"""
   pass
# Il nostro programma principale
# L'utente indovina un numero fino a quando non lo indovina correttamente
# Devi indovinare questo numero
number = 10
while True:
   try:
       i_num = int(input("Inserisci un numero: "))
       if i_num < number:
           raise ValueTooSmallError
       elif i_num > number:
           raise ValueTooLargeError
       break
   except ValueTooSmallError:
       print("Questo valore è troppo piccolo, riprova!")
       print()
   except ValueTooLargeError:
       print("Questo valore è troppo grande, riprova!")
       print()
print("Congratulazioni! Hai indovinato.")

Ecco un esempio di esecuzione del programma.

Inserisci un numero: 12
Questo valore è troppo grande, riprova!
Inserisci un numero: 0
Questo valore è troppo piccolo, riprova!
Inserisci un numero: 9
Questo valore è troppo piccolo, riprova!
Inserisci un numero: 10
Congratulazioni! Hai indovinato.

Qui, abbiamo definito una classe base chiamata Error.

Altre due eccezioni che la nostra applicazione può generare (ValueTooSmallError e ValueTooLargeError) derivano da questa classe. Questo è il metodo standard per definire eccezioni definite dall'utente nel programming Python, ma non ti limitare a questo metodo.

Visita questa pagina per informazioni dettagliateCome gestire le eccezioni in Python.