Eccezioni multiple in Python

Manav Narula 30 gennaio 2023
  1. Uso di virgole e parentesi per rilevare più eccezioni
  2. Usa la funzione suppress() per catturare più eccezioni
Eccezioni multiple in Python

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")
Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

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

Articolo correlato - Python Exception