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