
La differenza tra errori ed eccezioni
Sia gli errori che le eccezioni sono eventi che si verificano durante l'esecuzione di un programma in Python. In entrambi i casi si verifica qualcosa di inaspettato o non conforme alle regole del linguaggio. Tuttavia, non sono la stessa cosa. Ci sono alcune importanti differenze tra questi due concetti.
Errori
Gli errori in Python si verificano prima dell'esecuzione del programma. Spesso si tratta di errori di sintassi che impediscono al programma di essere eseguito.
Ad esempio, se dimentichi di chiudere una parentesi o tenti di utilizzare una variabile non definita, Python segnala un errore e interrompe l'esecuzione del programma.
Ecco un esempio di errore
print("Hello, World!"
Quando esegui lo script, Python lo interrompe e ti restituisce sullo schermo un messaggio di errore "Syntax Error"
SyntaxError: missing closing parenthesis
In questo caso c'è poco fare. Il programma non può essere eseguito fin quando non correggi l'errore di sintassi nel codice.
Gli errori sono individuati e segnalati prima che il programma vada in esecuzione, perché sono rilevati durante la fase di compilazione del codice Python in bytecode. Quindi, tecnicamente l'esecuzione del programma non viene interrotta, in quanto il programma non viene eseguito a causa dell'errore.
Eccezioni
Le eccezioni sono eventi che si verifica durante l'esecuzione del programma, anche se il codice è sintatticamente corretto, che causano l'interruzione dell'esecuzione.
Ad esempio, se il programma esegue una divisione per zero o cerca di aprire un file che non esiste, Python genera un'eccezione in questi casi.
Questo è un esempio pratico di eccezione
print(5 / 0)
La sintassi dell'istruzione è corretta.
Tuttavia, Python solleva un'eccezione ZeroDivisionError quando la esegue, perché si tratta di una divisione per zero, ossia di un'operazione matematicamente impossibile.
# ZeroDivisionError: division by zero
In questo caso il programma viene eseguito da Python perché il problema non viene individuato durante la fase di compilazione in bytecode, ma si presenta durante l'esecuzione.
Come gestire le eccezioni?
A differenza degli errori, le eccezioni possono essere corrette senza terminare l'esecuzione del programma.
In Python, puoi gestire le eccezioni utilizzando i blocchi try ed except.
- try:
- print(5/0)
- except ZeroDivisionError:
- print("Hai provato a dividere per zero!")
L'uso dei blocchi try ed except permette al programma di continuare l'esecuzione del programma anche se si verifica un'eccezione.
Gli errori, invece, non possono essere gestiti in questo modo e devono essere corretti sul codice quando il programma non è in esecuzione.