Eccezioni multiple in Python
- Uso di virgole e parentesi per rilevare più eccezioni
-
Usa la funzione
suppress()
per catturare più eccezioni
Nella programmazione, un’eccezione è un evento che disturba il normale flusso del programma. In Python, è rappresentato come un errore. Un’eccezione può essere di diversi tipi a seconda della sua causa come IndexError, KeyError e altro.
Possiamo usare i blocchi try
e except
per gestire le eccezioni. Il blocco try
contiene del codice che può sollevare un’eccezione, e se viene sollevata un’eccezione allora possiamo specificare il codice alternativo nel blocco except
.
Per esempio,
try:
print(5 / 0)
except:
print(5 / 1)
Produzione:
5
Il 5/0
solleva un’eccezione quindi esegue il codice nel blocco except
.
Nota che è possibile sollevare eccezioni manualmente anche usando la parola chiave raise
.
Possiamo anche gestire più eccezioni in Python. Sappiamo di avere diversi tipi di eccezioni in Python, quindi possiamo avere più istruzioni except
per diverse eccezioni.
Per esempio,
try:
raise ValueError()
except ValueError:
print("Value Error")
except KeyError:
print("Key Error")
Produzione:
Value Error
È anche possibile catturare più eccezioni con un’istruzione except
. Questi metodi sono discussi di seguito.
Uso di virgole e parentesi per rilevare più eccezioni
Il primo modo per ottenere ciò è separare le eccezioni con una virgola e metterle tra parentesi. Il codice seguente mostra come.
try:
raise ValueError()
except (ValueError, KeyError):
print("Error")
Produzione:
Error
Se si incontra un’eccezione da quella menzionata tra parentesi, viene eseguito il codice in questo blocco. Possiamo anche assegnare un nome all’oggetto eccezione (chiamato anche oggetto errore). e
è il nome più comunemente usato per l’oggetto errore. Per esempio,
try:
raise ValueError()
except (ValueError, KeyError) as e:
print("Error")
Produzione:
Error
La parola chiave as
crea l’alias per il nome dell’oggetto. Sotto Python 2.5 era possibile eliminare l’uso della parola chiave as
separando semplicemente il nome dell’oggetto errore usando una virgola come mostrato di seguito.
try:
raise ValueError()
except (ValueError, KeyError), e:
print("Error")
Produzione:
Error
Usa la funzione suppress()
per catturare più eccezioni
La libreria contextlib
fornisce una funzione molto utile chiamata suppress()
che può essere usata anche per gestire più eccezioni.
Questa funzione combina le istruzioni try
, except
e pass
in una riga di codice. Viene utilizzato con l’istruzione with
, utilizzata anche nella gestione delle eccezioni e rende il codice più pulito e leggibile.
Il codice seguente mostra come utilizzare questa funzione.
from contextlib import suppress
with suppress(FileNotFoundError):
os.remove("somefile.tmp")
Il codice sopra è equivalente al seguente programma con le istruzioni try
, except
e pass
.
try:
os.remove("somefile.tmp")
except FileNotFoundError:
pass
L’istruzione pass
viene utilizzata quando non si desidera eseguire nulla ma evitare qualsiasi errore per codice vuoto.
Possiamo usare la funzione suppress
per più eccezioni come mostrato di seguito.
from contextlib import suppress
with suppress(FileNotFoundError, KeyError):
os.remove("somefile.tmp")
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn